好的,昨晚大约凌晨 2 点,我的一台服务器上的 CPU 使用率上升到了 100%。今天早上我检查时,发现 5 个 php-fpm 进程总共占用了大约 100% 的 CPU。我重启了服务器,但每次服务器恢复时,php-fpm 进程都会重新启动并占用 100% 的 CPU。
它是一个 Ubuntu 14.04.3 LTS(GNU/Linux 3.13.0-32-generic x86_64)服务器,我已经更新了所有软件,但就是无法得到任何信息来了解导致这种情况的原因。
显然,该问题导致服务器上托管的网站处于离线状态,并且一直显示 502 错误网关或 504 网关超时错误......
我希望有人能帮助解决这个问题。
我有另外 3 台服务器,具有完全相同的设置,并且没有任何这些问题。
编辑1: 当我查看 NewRelic 时,它显示在问题开始出现的同时,网络选项卡中的“每秒数据包数”大幅增加,这一定与问题有关......
答案1
我在使用 PHP-FPM 时也遇到过类似的问题,即使在夜间流量较少时,它的 CPU 也会占用 100%。
您必须对 PHP-FPM 配置文件进行一些优化。请确保您有此条目:-
pm = 按需 pm.max_children = 2 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3
如果不是 ondemand,则更改为 ondemand,否则 PHP-FPM 将尝试占用大量 CPU 资源。使用 ondemand 时,它会在需要时启动更多进程。
PHP-FPM 的配置文件位于:-
/etc/php5/fpm/php-fpm.conf
在pool.d/www.conf 中还配置了一个池。
检查这两个文件中的条目并相应地优化上述设置,然后重新启动 PHP-FPM。