그림 5–TTL 배포 0~300 초입니다.이 문제를 해결하려면 어떻게해야합니까? 누적 배포로 인해 문제가 더욱 분명해질 수 있습니다:
그림 6–누적분포의 TTL0~3,500 초입니다.
인터넷의 절반은 1 분 TTL 이하를,4 분의 3 은 5 분 TTL 이하를 갖습니다.그러나 잠깐,이것은 실제로 더 나쁩니다. 이들은 신뢰할 수있는 서버에 의해 정의 된 Ttl 입니다. 그러나 클라이언트 리졸버(예:라우터,로컬 캐시)에서 검색 한 Ttl 은 업스트림 리졸버가 1 초마다 감소하는 TTL 을 얻습니다. 따라서 평균적으로 클라이언트가 새 쿼리를 요구하기 전에 캐시 된 항목을 사용할 수있는 실제 기간은 원래 TTL 의 절반입니다.
이러한 매우 낮은 Ttl 은 드문 쿼리에만 영향을 미치며 인기있는 웹 사이트 및 Api 는 아닙니다. 보자:
그림 7—TTL 에서 초(X axis)대한 쿼리기(Y-axis).
불행히도 가장 인기있는 쿼리는 캐시하기에 가장 무의미합니다. 확대하자:
그림 8—ttl(초)(X 축)대 쿼리 인기도(Y 축).
평결:정말 나쁘거나 오히려 이미 나빴고 악화되었습니다. DNS 캐싱은 쓸모 옆에되고있다. ISP 의 DNS 리졸버를 사용하는 사람이 적 으면(좋은 이유로)대기 시간이 길어지면 더 눈에 띄게됩니다. DNS 캐싱은 아무도 방문하지 않는 콘텐츠에만 유용하게되었습니다. 또한 소프트웨어는 낮은 TTLs 를 다르게 해석 할 수 있습니다.
왜?
왜 DNS 레코드가 낮은 TTLs 로 설정되어 있습니까?
레거시 로드 밸런서는 기본 설정으로 유지됩니다.
DNS 기반로드 밸런싱이 TTLs 에 의존한다는 도시 전설(그렇지 않습니다).
관리자는 계획 작업이 덜 필요할 수 있으므로 변경 사항을 즉시 적용하기를 원합니다.
로 DNS 또는 부하 분산 장치 관리자,당신의 의무를 효율적으로 배포의 구성 사람들은 묻지 않을 만드 웹사이트와 서비스를 빠르다.
낮은 TTLs 는 마음의 평화를 제공합니다.
나는 이것이 점점 더 관련성이 떨어지면서 그 목록에’장애 조치 용’을 포함하지 않습니다. 하려는 경우 다음 방법 중 하나로 네트워크를 표시할 고래할 때 페이지 절대적으로 다른 모든 것은 불에,하나 이상의 거리 지연은 아마도 허용됩니다.
Cdn 및 로드 밸런서는 크게 비난을 때,특히 그들을 결합 CNAME 기록 짧은 TTLs 레코드도 짧지만(독립)TTLs:
$ drill raw.githubusercontent.comraw.githubusercontent.com. 9 IN CNAME github.map.fastly.net.github.map.fastly.net. 20 IN A 151.101.128.133github.map.fastly.net. 20 IN A 151.101.192.133github.map.fastly.net. 20 IN A 151.101.0.133github.map.fastly.net. 20 IN A 151.101.64.133
새로운 쿼리를 필요로 전송될 때마다 CNAME 나의 레코드를 만료됩니다. 그들은 둘 다 30 초 TTL 을 가지고 있지만 단계에 있지 않습니다. 실제 평균 TTL 은 15 초가됩니다.
하지만 기다려! 이것은 더 나쁘다. 일부를 확인 프로그램 동작 꽤 심하게에서 이러한 낮은-TTL-CNAME+low-TTL-레코드를 상황
$ drill raw.githubusercontent.com @4.2.2.2raw.githubusercontent.com. 1 IN CNAME github.map.fastly.net.github.map.fastly.net. 1 IN A 151.101.16.133
이 Level3 의 해결책에,나는 생각한다,실행할 수 있습니다. 해당 쿼리를 계속 보내면 반환 된 TTL 은 항상 1 이됩니다. 본질적으로,raw.githubusercontent.com 캐시되지 않습니다.
다음은 매우 인기있는 이름을 특징으로하는 low-TTL-CNAME+low-TTL-records 상황의 또 다른 예입니다:
$ drill detectportal.firefox.com @1.1.1.1detectportal.firefox.com. 25 IN CNAME detectportal.prod.mozaws.net.detectportal.prod.mozaws.net. 26 IN CNAME detectportal.firefox.com-v2.edgesuite.net.detectportal.firefox.com-v2.edgesuite.net. 10668 IN CNAME a1089.dscd.akamai.net.a1089.dscd.akamai.net. 10 IN A 104.123.50.106a1089.dscd.akamai.net. 10 IN A 104.123.50.88
CNAME 레코드가 3 개 미만입니다. 아야. 그 중 하나는 괜찮은 TTL 을 가지고 있지만 완전히 쓸모가 없습니다. 다른 CNAMEs 는 원래 TTL 이 60 초입니다.akamai.net 이름은 최대 TTL 이 20 초이며 그 중 어느 것도 위상에 있지 않습니다.
어떻게 당신의 애플 장치가 지속적으로 폴링하는 것은 어떻습니까?
$ drill 1-courier.push.apple.com @4.2.2.21-courier.push.apple.com. 1253 IN CNAME 1.courier-push-apple.com.akadns.net.1.courier-push-apple.com.akadns.net. 1 IN CNAME gb-courier-4.push-apple.com.akadns.net.gb-courier-4.push-apple.com.akadns.net. 1 IN A 17.57.146.84gb-courier-4.push-apple.com.akadns.net. 1 IN A 17.57.146.85
Firefox 와 동일한 구성이며 Ttl 은 Level3 의 resolver 를 사용할 때 대부분 1 에 붙어 있습니다.
드롭 박스는 어떻습니까?나는 이것을 할 수 없다.safebrowsing.googleapis.com 60 초의 TTL 이 있습니다. Facebook 이름에는 60 초 TTL 이 있습니다. 그리고 다시 한번,클라이언트 관점에서 볼 때 이러한 값은 절반으로 줄여야합니다.
최소 TTL 설정은 어떻습니까?
이 이름을 사용하여 쿼리 유형,TTL 및 타임 스탬프를 처음에 저장되 나는 스크립트는 시뮬레이션 1.5+백만 쿼리를 통해 캐시 확인 프로그램를 예상하는 쿼리를 전송되었으로 인해 만료되어는 캐쉬 항목입니다. 쿼리의 47.4%는 기존의 캐시 된 항목이 만료 된 후에 이루어졌습니다. 이것은 부당하게 높습니다.
최소 TTL 이 설정된 경우 캐싱에 미치는 영향은 무엇입니까?
그림 10—TTL 에서 초(X 축)에 대한 비율의 쿼리로 만든 클라이언트가 이미 캐시된 항목(Y-axis).
X 축은 설정된 최소 TTL 입니다. 원래 TTL 이 이 값보다 높은 레코드는 영향을 받지 않았습니다. Y 축은 캐시된 항목이 이미 있지만 새 쿼리가 만들어지고 캐시된 항목이 만료된 클라이언트가 만든 쿼리의 백분율입니다.
쿼리 수는 최소 5 분의 TTL 을 설정하는 것만으로 47%에서 36%로 떨어집니다. 최소 TTL 을 15 분으로 설정하면 필요한 쿼리 수가 29%로 떨어집니다. 1 시간의 최소 TTL 은 17%로 떨어집니다. 그것은 중요한 차이입니다!
는 방법에 대해 아무것도 변화하지 서버쪽,하지만 클라이언트는 DNS 캐시(라우터,지역의 해결과 캐시…)설정한 최소한 TTL 까요?
그림 11—TTL 에서 초(X 축)에 대한 비율의 쿼리로 만든 클라이언트가 이미 캐시된 항목(Y-axis).
필요한 쿼리 수는 최소 TTL 을 5 분으로 설정하여 47%에서 34%로,15 분 최소로 25%로,1 시간 최소로 13%로 떨어집니다. 40 분 어쩌면 달콤한 자리. 그 최소한의 변화의 영향은 엄청납니다.
의미는 무엇입니까?
의 물론,서비스로 전환할 수 있는 새로운 클라우드 업체로,새로운 서버는 새로운 네트워크를 요구하는 클라이언트가 사용하여 그대로–날짜 DNS records. 그리고 합리적으로 낮은 TTLs 를 갖는 것은 전이를 마찰이 없도록 만드는 데 도움이됩니다. 그러나 새로운 인프라로 이동하는 사람은 클라이언트가 1 분,5 분 또는 15 분 내에 새로운 DNS 레코드를 사용할 것으로 기대하지 않습니다.
5 분 대신 최소 TTL 을 40 분으로 설정하면 사용자가 서비스에 액세스하지 못하게됩니다. 그러나,그것은 과감하게 대기 시간을 줄이고,개선이 개인정보(자세한 질=더 추적 기회)및 신뢰성을 피함으로써 불필요한 쿼리를 처리합니다.
물론 RFCs 는 TTLs 를 엄격하게 존중해야한다고 말합니다. 그러나 현실은 DNS 가 비효율적이되었다는 것입니다.
신뢰할 수있는 DNS 서버를 운영하는 경우 TTLs 를 다시 방문하십시오. 당신은 정말로 이것들이 엄청나게 낮을 필요가 있습니까?
읽기:DNS TTL 값을 선택하는 방법
물론,낮은 DNS TTLs 를 사용하는 유효한 이유가 있습니다. 그러나 인터넷의 75%가 대부분 불변이지만 캐시에 무의미한 콘텐츠를 제공하는 것은 아닙니다. 는 경우,어떤 이유로,당신은 정말을 사용할 필요가 낮은 DNS TTLs,또한지 확인하는 캐쉬에서 작동하지 않습니다 웹 사이트 중 하나. 아주 같은 이유로.
최소 TTLs 를 설정할 수있는 dnscrypt-proxy 와 같은 로컬 DNS 캐시를 사용하는 경우 해당 기능을 사용하십시오. 이건 괜찮아. 나쁜 일은 일어나지 않을 것입니다. 최소 TTL 을 40 분(2400 초)에서 1 시간 사이의 무언가로 설정하십시오.
에 등장 원래 게시물에서 적응 00f.net