우리는 매우 큰 웹사이트를 위해 Apache 2.2 서버를 운영하고 있습니다. 지난 몇 달 동안 일부 사용자는 느린 응답 시간을 보고했지만 다른 사용자(내부 네트워크와 홈 네트워크의 리소스 포함)에서는 성능 저하가 나타나지 않았습니다.
수많은 조사 끝에 마침내 구성에서 역방향 DNS 조회(시간 초과됨)를 유발하는 "Deny from none" 문을 발견하여 대부분의 문제를 해결했지만 여전히 일부 고객이 이미지, CSS, 자바스크립트 및 기타 정적 콘텐츠에 대한 요청 처리 시간이 300초를 넘는 Apache 로그(로그 형식에 %D 사용)
우리는 모든 거부/허용 문에서 "none"이 다시 발생하는지 확인했을 뿐만 아니라 역방향 DNS 조회를 유발할 수 있는 다른 모든 사항(예: 재작성 규칙에서 "REMOTE_HOST" 사용, %h 대신 %a 사용)을 확인했습니다. 로그 형식 구성) HostnameLookups가 "Off"로 설정되어 있는지 확인했습니다.
여담으로, 우리는 이 문제가 있는 사람들을 위한 역방향 DNS 조회가 시간 초과되지 않는다는 것도 확인했습니다. 따라서 이 경우에는 DNS가 문제가 되지 않는다고 확신합니다.
아이디어가 부족해요. 특정 사용자에 대해서만 정적 콘텐츠에 대한 요청 시간이 너무 오래 걸리게 만드는 누군가가 내가 누락되었을 수 있음을 알려줄 수 있는 Apache 구성 시나리오가 있습니까?
미리 감사드립니다.
답변1
이런 종류의 것을 발견하면 먼저 다음을 확인합니다.
- DNS. 구성 파일을 눈으로 확인하는 것뿐만 아니라 이를 확인하려면
tcpdump
또는 같은 네트워크 덤프를 사용하십시오 .wireshark
이것이 문제가 아니라고 확신한다면, - 해당 사용자에게는 경로 추적/핑이 어떻게 보일까요? 그들은 모두 공통점이 있습니까? 나는 나쁜 NAT 상자 때문에 슬픔이 끝나지 않는 것을 보았습니다. 또한 사용자에 대한 로컬 트래픽으로 인해 연결이 로드되지 않은 다른 사이트보다 내 사이트가 느리게 나타나는 것을 보았지만 그들은 내 사이트가 느리다는 것을 알아차렸습니다.
- 방화벽/터널링. ICMP를 모두 차단하는 등 어리석은 짓을 하고 있는 걸까요? 터널에 있나요? 둘 다 그렇다면 PMTU 검색 시간이 이상한 방식으로 초과될 가능성이 있습니다.
300초의 응답 시간은 아마도 Apache가 서비스를 제공했다는 의미가 아니라 이를 포기했다는 의미일 것입니다. 5분은 서버가 기다리는 매우 긴 시간이지만, 클라이언트가 그렇게 오래 기다리는 것은 더욱 미친 짓입니다.