PHP-FPM/MYSQL/NGINX 的 CPU 使用率非常奇怪

PHP-FPM/MYSQL/NGINX 的 CPU 使用率非常奇怪

我有

  • php-fpm 7.0.11-带有 ioncube
  • nginx 1.10.x
  • mariadb 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 

我的网络服务器每秒收到超过 5000 个请求,但是在这个数量下以前一切都很好。

很奇怪,因为:

  • 如果我用 PHP 文件的原始源替换 ioncubed ,则负载将减少到 8 ,并且 CPU 使用率仅为 15-20%

  • 如果我保留 ioncube,但停止 mysql,平均负载和 CPU 也会减少。

  • 有时当我更改 sysctl 配置时,CPU 会下降 10 秒,但随后又会达到 100%

我无法解释这一点,因为如果是 ioncube,我就会遇到 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

相关内容