Linux宝塔面板解决php-fpm占用CPU过高问题全记录
在使用宝塔面板管理LNMP(Linux + Nginx + MySQL + PHP)环境时,可能会遇到php-fpm进程占用CPU过高的问题,导致网站响应缓慢甚至无法访问。以下是一个详细的解决过程,旨在帮助遇到类似问题的用户快速定位并解决该问题。
一、问题背景
用户在使用宝塔面板搭建的网站中,发现网站经常出现卡顿和无法访问(502错误)的情况。通过top命令监控发现,php-fpm进程占用CPU过高,严重影响了网站的正常运行。
二、初步排查
- 检查是否被攻击或挖矿:用户首先怀疑是因为设置了弱密码导致被攻击,或者系统被挖矿。但在日志中并未找到有用的信息。
- 重装系统:尝试通过重装系统来解决问题,但并未奏效。
- 检查MySQL版本:怀疑是MySQL版本问题,从5.5换到5.1,多次尝试后问题依旧存在。
三、定位问题
通过持续的监控和排查,用户最终定位到问题是php-fpm进程占用CPU过高。
四、解决方案
-
确认宝塔面板环境:
宝塔面板安装的建站环境为LNMP,具体版本为Nginx 1.16.1、MySQL 5.5.62、PHP-7.0。

-
优化PHP7.0设置:
安装opcache缓冲器:用于加速PHP脚本的执行,提高性能。
修改max_execution_time:将最大执行时间修改为20秒,以减少脚本执行时间过长导致的CPU占用。


性能调整:根据服务器配置进行性能调整。宝塔面板会根据服务器配置推荐合适的并发设置。用户可以根据自己的服务器内存大小计算并发数,一般一个php-fpm进程占用内存约30M。以1G内存为例,大约可以设置34个并发。用户根据自己的实际情况,将并发数设置为20,并将max_spare_servers调整为14。

-
效果验证:
经过上述优化后,用户发现服务器CPU占用情况明显改善,不再像之前一样经常性占用100%。
虽然php-fpm进程偶尔还会出现突发占用CPU 100%的情况,但基本能够迅速恢复正常,对用户的浏览体验影响较小。
五、总结
通过优化PHP7.0的设置,特别是安装opcache缓冲器、调整max_execution_time和根据服务器配置进行性能调整,用户成功解决了php-fpm占用CPU过高的问题。虽然偶尔还会出现突发情况,但整体性能得到了显著提升。
需要注意的是,不同服务器的配置和网站的具体需求可能有所不同,因此在实际操作中需要根据具体情况进行调整。同时,建议定期监控服务器性能,及时发现并解决问题,以确保网站的正常运行。




