Reverse DNS Lookup 으로 인해 웹서버의 응답이 느려졌을 때

분류없음 2010/01/11 00:41

Reverse DNS Lookup은 접속한 클라이언트의 IP를 바탕으로, 그 클라이언트의 hostname을 얻어내는 DNS 질의이다.

일반적인 서비스에서 리얼타임으로 이 Reverse DNS Lookup을 쓸 일은 많지 않다. IP로 로깅하고, 추후 분석 시 Reverse DNS Lookup을 실행하는 것이 더 일반적이다.

DNS 설정이 잘못되거나, 상위 Reverse DNS Resolver Server에 문제가 발생할 경우, 이 단계에서 시간을 소모하여 접속이 느려지는 상황이 발생할 수 있다. 다른 장애 조짐과는 달리, 최초 접속이 심각하게 느리고, 나머지 처리는 정상적인 속도를 보이는 특징이 있다.

MySQL

MySQL이 Reverse DNS Lookup 을 사용하는 상태에서, Reverse DNS Lookup 응답이 늦어지면, 다음과 같은 특징을 보인다.

  • connection 생성 자체는 느리나, 쿼리 실행은 빠르다.
  • show processlist 명령 시 unauthenticated user 가 여럿 보인다.

원인은 connection을 받아들일 때 Reverse DNS Lookup을 수행하기 때문이며, 다음과 같이 해결 가능하다. ( 참고 )

  • mysql 구동 시 --skip-name-resolve 옵션을 주거나
  • /etc/my.cnf 에 다음 설정을 추가한다.
  • [mysqld]
    skip-name-resolve

Apache

Apache에서는 다음과 같은 사항을 검토한다. ( 참고 )

  • HostnameLookups On 으로 설정되어 있을 경우, Off로 설정한다.
  • Allow / Deny 룰을 도메인 기반으로 설정하지 않는다. (ex. Deny from example.org )
    주의: Deny from none 으로 설정하지 않는다. none은 올바른 지시자가 아니다. ( 참고 )
  • LogFormat 에 %h 대신 %a 를 사용한다. 황당하게도, %h가 기본 포맷이다.


저작자 표시 비영리 변경 금지
Trackback 0 : Comment 0
◀ PREV : [1] : [2] : [3] : [4] : [5] : ... [436] : NEXT ▶