9696 – 中文站 | 科普文章,文史知识,英文演讲和英文书籍

CentOS7安装和更新PHP到PHP8.2以及php-fpm优化

环境:CentOS 7.9

这个服务器最初尝试安装PHP8.2,似乎也是因为当时的WordPress版本需要用的某些东西不支持8.2,只好退回到8.0。

但是一直以来总有php-fpm占用内存和CPU过高的问题,今天在想会不会把PHP更新到最新版本会好一点。于是查了一下WordPress对PHP的支持情况,WordPress最新版本支持PHP8.2。WordPress对PHP版本的支持情况见这里:https://make.wordpress.org/core/handbook/references/php-compatibility-and-wordpress-versions/

安装PHP8.0流程:
安装较新版本的PHP需要用到Remi和Epel库,先安装这两个库,命令如下:

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget https://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
或者:
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
然后安装PHP:
yum -y install php

查看安装的PHP版本
php -v

更新到最新的PHP8.2版流程:
第一步:
yum-config-manager –enable remi-php82
然后:
yum update
即会更新至最新的8.2版。

同时,我根据这这篇文章进行了一些优化:https://geekflare.com/php-fpm-optimization/

php-fpm.conf中添加了如下设置:
emergency_restart_threshold 10
emergency_restart_interval 1m
process_control_timeout 10s

前两项设置告诉php-fpm进程,如果1分钟内有10个子进程失败,则php-fpm进程自动重启。php这种短生命周期的进程很容易产生内存泄露,所以在失败率较高时重启主进程能够解决很多问题。

process_control_timeout这一项告诉进程在收到上一级进程的信号时等待这么长的时间再执行。有的时候子进程可能正在执行某些任务,而上级进程发来Kill信号,等待10秒钟的话,这些子进程更有可能完成掉正在进行的任务,从而完美地退出。

为优化php的资源占用,一般还需要到/etc/php-fpm.d/www.conf里面配置pm,pm.max_children等项目以控制进程数量,这一项优化网络上可以搜到较多信息,这里就不再叙述(这里有个计算以上几个参数值的计算器:https://chrismoore.ca/2018/10/finding-the-correct-pm-max-children-settings-for-php-fpm/)。

完成升级以及上述优化以后,php的资源占用就大大好转,几乎不会再看到php-fpm占用较高资源了。

但是更新好以后,新的问题来了,发现WordPress里要用到的imagick这个extention不可用了,这下可麻烦了,下一篇来介绍一下如何解决这个问题。

本文链接:

分享:
分享:

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部