PHP-FPM/MYSQL/NGINX での CPU 使用率が異常に高い

PHP-FPM/MYSQL/NGINX での CPU 使用率が異常に高い

私は持っている

  • php-fpm 7.0.11 - ioncube 付き
  • nginx 1.10.x
  • マリアDB 10.1

私は PHP-FPM を静的に使用していますが、これに関して問題は一度もありませんでした。CPU 使用率が高くなるのはランダムに発生していましたが、現在は恒久的です。変更は行っていません。

話している時点では、CPU 使用率は 100% で、ほとんどの PHP-FPM プロセスが R 状態になっています。

これがトップ出力です。私の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 

私の Web サーバーは 1 秒あたり 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

関連情報