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

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

우리는 전용 서버에서 웹 서비스를 호스팅합니다. 로드가 많은 기간에는 서버가 페이지 대신 시간 초과 오류를 매우 자주 반환합니다. 일일 요청 수는 약 170,000개입니다. 그러나 서버에 사용 가능한 메모리가 많고 현재 CPU가 로드되지 않습니다.

왜 서버가 제대로 작동하지 않는지 이해할 수 없습니다.

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

이 데이터를 보면 왜 문제가 발생하는지 아시나요? 오류의 원인에 더 가까이 다가가려면 어떻게 해야 합니까?

실제 IP 주소를 123.45.67.890으로 바꿨습니다.

---- 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
--------

서비스에 대한 세부정보입니다.

일기예보 서비스입니다. MySQL이 지원하는 Perl로 작성되었습니다. 스크립트는 여러 모듈(CPAN 및 자체 모듈)을 사용합니다.

코드는 비교적 간단합니다. 스크립트는 다른 서버에서 날씨를 다운로드하고 데이터 형식을 변환한 후 XML 응답을 반환합니다. 날씨는 MyISAM DB에 캐시됩니다. 스크립트를 통해서도 요청할 수 있는 INNODB(세계 위치 데이터베이스)가 있습니다.

이는 부하가 높은 기간 동안 측정된 측정항목입니다.

평균 트래픽: 2.5MBit/초

평균 패킷 수: 3300 패킷/초

호스팅 업체: 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.htm 120개 중 하위 서버가 10개만 있으므로 새 요청을 위한 공간이 충분합니다.

로드가 많은 기간 동안의 상위 프로그램 스냅샷입니다.

------
top - 13:21:29 up 15 days, 18:36,  1 user,  load average: 0.18, 0.19, 0.21
Tasks: 137 total,   1 running, 136 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.8%us,  1.2%sy,  0.0%ni, 92.8%id,  0.7%wa,  0.0%hi,  3.5%si,  0.0%st
Mem:   1033904k total,   590620k used,   443284k free,     6892k buffers
Swap:  3028212k total,    82556k used,  2945656k free,    64156k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4252 mysql     20   0  162m  48m 3352 S    1  4.8 279:01.27 mysqld
14503 www-data  20   0 43280  14m 3824 S    1  1.4   0:00.16 apache2
14577 www-data  20   0 43012  13m 3500 S    1  1.4   0:00.06 apache2
14401 www-data  20   0 45076  17m 4340 S    0  1.8   0:00.46 apache2
14414 www-data  20   0 45516  18m 4344 S    0  1.8   0:00.47 apache2
14420 www-data  20   0 45624  18m 4372 S    0  1.8   0:00.61 apache2
14421 www-data  20   0 45488  18m 4352 S    0  1.8   0:00.42 apache2
14496 www-data  20   0 44820  17m 4328 S    0  1.7   0:00.18 apache2
14510 www-data  20   0 45216  17m 4300 S    0  1.8   0:00.62 apache2
    1 root      20   0  2844  456  404 S    0  0.0   0:05.24 init
    2 root      15  -5     0    0    0 S    0  0.0   0:00.00 kthreadd
    3 root      RT  -5     0    0    0 S    0  0.0   0:00.24 migration/0
    4 root      15  -5     0    0    0 S    0  0.0  32:28.85 ksoftirqd/0
    5 root      RT  -5     0    0    0 S    0  0.0   0:00.77 watchdog/0
    6 root      RT  -5     0    0    0 S    0  0.0   0:00.15 migration/1
    7 root      15  -5     0    0    0 S    0  0.0   0:03.07 ksoftirqd/1
    8 root      RT  -5     0    0    0 S    0  0.0   0:00.63 watchdog/1
-----

답변1

귀하의 MySQL 서버는 높은 CPU 시간으로 인해 때때로 열심히 작동하는 것 같습니다(그러나 스크린샷에서는 그렇지 않습니다). SHOW PROCCESSLIST;MySQL 프롬프트에서 실행하여 어떤 쿼리가 실행되는지 확인하세요 .

또한 활성화해 보십시오.서버 상태아파치의 페이지. 이를 통해 ExtendedStatus On해당 시점에 어떤 페이지가 로드되고 있는지에 대한 정보를 제공하고 Apache에 남아 있는 열린 "슬롯" 수를 확인할 수 있습니다.

Apache mpm-prefork의 기본값은 최대 약 250개의 프로세스를 갖는 것입니다. 즉, 250개의 동시 파일 다운로드를 처리할 수 있다는 의미입니다. 방문자가 많은 경우, 특히 활성화한 경우에는 많은 문제가 발생할 수 있습니다 KeepAlive. 이것이 문제라면 서버 상태 페이지에서 확인할 수 있습니다.

답변2

Apache가 응답하지 않는 데는 여러 가지 이유가 있습니다(<--말장난). 시작점으로 나는 당신이 가지고 있다고 가정하고 서버 상태를 살펴볼 것입니다mod_status활성화하고 실행 중인 프로세스 수와 사용 중인 것으로 보이는지 여부를 확인합니다.이 페이지하위 프로세스 문제가 있는 것으로 밝혀진 경우 시도해 볼 수 있는 작업을 먼저 살펴보는 것이 좋습니다.

답변3

상단 스크린샷은 MySQL 서버가 전혀 작동하지 않고 있음을 보여줍니다! (죄송합니다 Emil - 하지만 이 내용을 좀 더 주의 깊게 읽어보거나 top에 대해 좀 더 배워야 합니다).

그리고 나열된 아파치 프로세스는 8개뿐입니다.

그리고 로드 평균은 0.2이고 CPU 유휴 상태는 93%입니다. 이 머신은 아무것도 하지 않고 앉아 있습니다.

게시된 링크에서 구성의 절반이 누락되었지만 미리 포크된 것처럼 보입니다.

내 첫 번째 추측은 MaxServers가 10과 같은 이상한 값으로 설정되어 있다는 것입니다(응용 프로그램의 모양에 따라 100-200 범위에 있어야 합니다).

또한 들어오는 연결에 대한 역방향 조회나 설치된 mod_ident와 같은 어리석은 작업을 확인하고 싶을 수도 있습니다.언제나어리석은 일이지만 극도로 주의해서 사용해야 합니다.)

확실히 mod_status를 설치하고 확장 상태를 활성화하면 여기서 무슨 일이 일어나고 있는지 훨씬 더 잘 이해할 수 있습니다.

씨.

답변4

서버에 플러드 핑(ping -f)을 시도해 볼 수 있습니까? 서버가 SYN 패킷에 충분히 빠르게 응답하지 않는 것 같기 때문에 네트워크 연결과 관련된 하드웨어 문제가 있는 것 같습니다.

관련 정보