서버가 응답하지 않는 이유는 무엇입니까?

서버가 응답하지 않는 이유는 무엇입니까?

우리 서버는 때때로 간단한 HTML 페이지 제공을 거부합니다.

이는 상대적으로 많은 요청이 있을 때 발생합니다. 그러나 프로세서의 부하가 높지 않고 여유 메모리가 많습니다. 서버 부하에 따라 평균 50개 요청 중 1개꼴로 오류가 발생하는 것으로 보입니다.

문제의 원인을 찾아 이를 제거하기 위한 적절한 조치를 취해야 합니다.

문제의 원인은 엄청나게 많은 수의 네트워크 패킷이 들어오는 것으로 의심됩니다. 초당 평균 5000개의 패킷이 있습니다. 트래픽 - 2MBits/초 이것이 오류의 원인일 수 있습니까?

흥미로운 점은 서버가 응답하지 않는 경우 요청 문자열이 Apache에 의해 access.log에 기록되지 않는다는 것입니다.

여러 클라이언트 컴퓨터에서 오류가 반복됩니다. IP로 서버에 액세스했기 때문에 DNS는 관련되지 않습니다.

tcpdump 유틸리티를 사용하여 문제 사례를 프로파일링했습니다. tcpdump가 추적한 좋은 세션과 나쁜 세션은 다음과 같습니다. 요청은 두 실험 모두 동일합니다. 양호 - 서버가 응답을 반환합니다. 나쁨 - 응답 없음, 시간 초과 오류.

---- Bad ----
12:23:36.366292 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:23:39.362394 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:23:45.365567 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,nop,sackOK>
--------

---- Good ----
12:27:07.632229 IP 123.45.67.890.63914 > myserver.superbservers.com.www: S 3581365570:3581365570(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:27:10.620946 IP 123.45.67.890.63914 > myserver.superbservers.com.www: S 3581365570:3581365570(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:27:10.620969 IP myserver.superbservers.com.www > 123.45.67.890.63914: S 2654770980:2654770980(0) ack 3581365571 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 6>
12:27:10.838747 IP 123.45.67.890.63914 > myserver.superbservers.com.www: . ack 1 win 4380
12:27:10.957143 IP 123.45.67.890.63914 > myserver.superbservers.com.www: P 1:213(212) ack 1 win 4380
12:27:10.957152 IP myserver.superbservers.com.www > 123.45.67.890.63914: . ack 213 win 108
12:27:10.965543 IP myserver.superbservers.com.www > 123.45.67.890.63914: P 1:630(629) ack 213 win 108
12:27:10.965621 IP myserver.superbservers.com.www > 123.45.67.890.63914: F 630:630(0) ack 213 win 108
12:27:11.183540 IP 123.45.67.890.63914 > myserver.superbservers.com.www: . ack 631 win 4222
12:27:11.185657 IP 123.45.67.890.63914 > myserver.superbservers.com.www: F 213:213(0) ack 631 win 4222
12:27:11.185663 IP myserver.superbservers.com.www > 123.45.67.890.63914: . ack 214 win 108
--------

호스팅 업체: SuperbHosting

OS: 우분투

서버 매개변수: E6300 CONROE 1.86GHZ 2 X 1MB 캐시 1066 1GB DDR2 667MHZ

이것은 우리가 사용하는 Apache 구성 파일에 대한 링크입니다.http://repkin5.snow.prohosting.com/apache.txt

타임아웃 오류 발생 직후 작성된 서버 상태 리포트입니다.http://repkin5.snow.prohosting.com/server-status.htm120개 중 하위 서버가 10개만 있으므로 새 요청을 위한 공간이 충분합니다.

VMSTAT

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0   8900 725900   8468  65684    0    0     5    18   11   33  4  3 92  1

답변1

  • 흥미로운 점은 서버가 응답하지 않는 경우 요청 문자열이 Apache에 의해 access.log에 기록되지 않는다는 것입니다.

네트워크 문제인 것 같습니다. 서버는 어떤 이유로 응답할 수 없더라도 수신하는 모든 요청을 기록해야 합니다. 웹 서버에서 패킷 손실이 표시되지 않는지 확인할 수 있습니다.

답변2

TCP 연결에 사용 가능한 커널 버퍼가 낮은 위치에 있을 가능성은 적습니다. 나는 그것으로부터 약간의 로깅을 기대합니다 (서버에 로그인하고 "응답 없음"이 나타날 때까지 테스트 한 다음 실행 dmesg하고 적용 가능한 것이 있는지 확인하십시오).

네트워크 설정을 조정하려면,이것이 출발점이 될 수 있다.

Chris Nava가 말했듯이 네트워크 전체에서 패킷 손실이 발생하지 않았는지 확인하는 것이 가치가 있으므로 반드시 ping을 사용하여 확인을 시작하십시오(ping에 응답하는 것은 아쉽게도 TCP 패킷을 처리하는 것과 전혀 동일하지 않습니다) ).

관련 정보