PHP-FPM/MYSQL/NGINX의 매우 이상한 CPU 사용량

PHP-FPM/MYSQL/NGINX의 매우 이상한 CPU 사용량

나는 가지고있다

  • php-fpm 7.0.11 - 이온큐브 포함
  • nginx 1.10.x
  • 마리아DB 10.1

나는 PHP-FPM을 정적으로 사용하고 있는데, 이것에 아무런 문제가 없었습니다. 높은 CPU 사용량이 무작위로 발생했으며 이제는 영구적입니다. 나는 아무 것도 변경하지 않았습니다.

현재 R 상태의 대부분의 PHP-FPM 프로세스에서 CPU 사용량은 100%입니다.

다음은 최고 출력입니다. 내 CPU는 16개 스레드입니다.

top - 08:21:15 up 31 min,  2 users,  load average: 799.18, 782.54, 620.78
Tasks: 1082 total, 799 running, 283 sleeping,   0 stopped,   0 zombie
%Cpu(s): 98.5 us,  1.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 

내 웹서버는 초당 5000개 이상의 요청을 받고 있지만 이전에는 이 정도의 양이면 모든 것이 괜찮았습니다.

다음과 같은 이유로 매우 이상합니다.

  • ioncubed를 PHP 파일의 원본 소스로 교체하면 로드가 8로 감소하고 CPU 사용량도 15-20%로 감소합니다.

  • ioncube를 유지하고 mysql을 중지하면 로드 평균과 CPU도 감소합니다.

  • 가끔 sysctl 구성을 변경하면 CPU가 10초 동안 감소하다가 다시 100%로 돌아가는 경우가 있습니다.

이것을 설명할 수 없습니다. 이온큐브라면 2)에 문제가 있겠지만 그렇지 않기 때문입니다.

나는 진짜 원인을 찾으려고 머리가 빠졌고 아무것도 바꾸지 않았을 때 그런 일이 일어났기 때문에 나를 미치게 만듭니다.

내 sysctl 파일은 다음과 같습니다.

net.core.wmem_max= 1677721600
net.core.rmem_max= 1677721600
net.ipv4.tcp_rmem= 1024000 8738000 1677721600
net.ipv4.tcp_wmem= 1024000 8738000 1677721600
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_no_metrics_save = 1
net.core.netdev_max_backlog = 8000
net.ipv4.route.flush=1
fs.file-max=265536
net.core.somaxconn = 65535
vm.max_map_count=655300

관련 정보