宝塔调整PHP性能参数,解决WordPress 占用内存不断上升的问题,很多人都遇到wordpress挂掉处理的麻烦事,昨天移机安装好 WordPress后,在浏览器中可以打开江湖人士网站就没有管它了,谁知今天早上访问量来了,结果导致数据库崩溃,然后手动在宝塔重启mysql数据库,总是坚持不了一会儿又自动挂掉了,打开网页时会得到这个提示:【Error establishing a database connection】,宝塔后台会看到数据库已经处于挂掉的状态:
Error establishing a database connection
数据库已经挂掉,因为性能问题,我们需要优化WordPress占用内存,这样mysql崩溃处理好了,数据库才不会挂掉,因此需要进入宝塔后台调整一下。
wordpress挂掉处理
并出现了错误提示信息。在服务器后台开启 WordPress 的调试模式后,刷新浏览器,得到了更详细的错误信息,分析后得知是无法连接数据库的问题。在服务器中一看,MYSQL 数据库不知什么时候挂掉了。查看系统内存使用情况,发现总共 1G 的内存,现在使用了九百多兆。在一看系统并没有交换分区。原因一下就很清楚了,是系统内存不足导致 MYSQL 崩溃。为系统添加了 1G 的交换文件作为虚拟内存后,数据库是不崩溃了,但 WordPress 使用一段时间后反应就相当慢,并且服务器的 SSH 连接也几乎不能使用。综合前面的情况可知,现在的问题是 WordPress 使用过程中占满了系统内存,系统开始使用交换文件,而交换文件性能不足导致。
宝塔调整PHP性能参数
在控制台重启服务器后,继续在浏览器中使用 WordPress,并且在后台实时监控系统内存的使用情况。发现进行更换主题,安装插件等一些操作时,系统内存使用量会大量增长,并且很快会超出物理内存大小,造成访问缓慢的问题。多方查找资料后,发现是 php-fpm 的问题。
php-fpm 的 FastCGI 进程一旦加载就不会释放,当其工作完成后,并不会释放给系统内存,而是休眠于 FastCGI 系统池中,等待下一次被唤醒。就造成了内存不断上升的问题。我一直用的是 php-fpm 默认配置,这个配置对于我来说可能有点不合适,需要修改配置文件。
宝塔是个很好用的面板,建议建站的朋友都安装上。
php-fpm 的相关参数
- pm:表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态),默认为dynamic。
- pm.max_children:静态方式下开启的php-fpm进程数量。
- pm.start_servers:动态方式下的起始php-fpm进程数量。
- pm.min_spare_servers:动态方式下的最小php-fpm进程数量。
- pm.max_spare_servers:动态方式下的最大php-fpm进程数量。
区别
如果pm设置为 static,那么其实只有 pm.max_children 这个参数生效。系统会开启设置数量的 php-fpm 进程。
如果pm设置为 dynamic,那么 pm.max_children 参数失效,后面 3 个参数生效。系统会在 php-fpm 运行开始的时候启动 pm.start_servers 个 php-fpm 进程,然后根据系统的需求动态在 pm.min_spare_servers 和 pm.max_spare_servers 之间调整 php-fpm 进程数。
php-fpm 参数调整
对于内存大的服务器(8G)以上,指定静态的max_children实际上更为妥当,因为这样不需要进行额外的进程数目控制,会提高效率。对于小内存的服务器,动态方式会结束掉多余的进程,可以回收释放一些内存。
直接在宝塔后台调整即可,如下图所示:
然后重启 php-fpm,系统内存使用在二百多兆。操作 WordPress 一段时间后,系统内存使用量不断增长,最终稳定在四百多兆。问题得以解决。