내 웹사이트는 매우 느리지만 %CPU는 25%에 불과합니다.

내 웹사이트는 매우 느리지만 %CPU는 25%에 불과합니다.

내 웹사이트에는 2개의 서버가 있습니다.

  • MySQL용 서버 256GO RAM 20c/40t 1개
  • Apache용 서버 256GO RAM 20c/40t 1개

MySQL 서버는 항상 괜찮습니다(CPU의 30-50%가 사용됩니다).

하지만 내 웹 사이트에 동시 접속 방문자가 10,000명(분당 5,000페이지 로드됨)이 되기 시작하면 Apache 서버는 SUPERSLOW가 됩니다. 이상한 점은 CPU의 메모리 충전량이 20~30% 정도이기 때문에 이 서버가 아직 한계에 도달하지 않았다는 것입니다.

이것이 topApache 서버에서 반환되는 내용입니다(웹 사이트 방문자가 10,000명으로 매우 느릴 때).

top - 22:04:17 up 22:34,  1 user,  load average: 12.61, 13.59, 13.47
Tasks: 2139 total,  20 running, 2119 sleeping,   0 stopped,   0 zombie
%Cpu(s): 28.2 us,  7.2 sy,  0.0 ni, 63.0 id,  0.0 wa,  0.0 hi,  1.6 si,  0.0 st
KiB Mem : 26410644+total, 17146396+free,  8632064 used, 84010416 buff/cache
KiB Swap:  1047548 total,  1047548 free,        0 used. 25449820+avail Mem

이 서버의 CPU 사용량에는 제한이 있는 것 같습니다.

그리고 이것은 Apache 서버의 구성입니다.

keepalive: Off
keepalivetimeout: 2
maxclients: 3000
maxkeepaliverequests: 1000
maxrequestsperchild: 15000
maxspareservers: 300
minspareservers: 150
serverlimit: 3000
startservers: 1000
timeout: 300

그리고 어제보다 더 정확해야 합니다. 저는 Apache 서버용 128GO RAM을 사용했고 웹사이트는 초저속 상태가 되기 전에 13,000명의 동시 접속 방문자를 지원할 수 있었습니다. 그래서 256GO 램으로 바꾸기로 했으나 결과는 최악이네요...

어떤 아이디어가 있나요?

WHM을 사용하고 있습니다.

(내 영어로 미안해요)

답변1

"MaxClients 지시어는 처리될 동시 요청 수에 대한 제한을 설정합니다. MaxClients 제한을 초과하는 모든 연결 시도는 일반적으로 ListenBacklog 지시어에 따른 최대 개수까지 대기열에 추가됩니다. 일단 하위 프로세스가 종료 시 해제됩니다. 다른 요청이 있으면 연결이 서비스됩니다." (Ref.http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients).

관련 문서를 자세히 살펴보면 "serverlimit" 및 "maxrequestsperchild"를 관리하는 방법을 찾을 수 있습니다.프리포크/노동자MPM은 Michael Hampton이 묘사한 상황을 피하기 위한 것입니다(매우 설명적입니다!).

또한 로그를 확인하면 이에 대한 몇 가지 증거를 찾을 수 있습니다.

관련 정보