优化PHP配置需结合PHP-FPM进程管理、核心参数调整、OPcache加速及系统环境优化等多方面,以下是具体步骤:
首先确保系统及PHP相关组件为最新版本,避免已知漏洞并兼容新特性:
sudo yum update -y
安装EPEL(额外软件包)和Remi存储库(提供最新PHP版本):
sudo yum install epel-release -y
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y # CentOS 7示例
启用Remi存储库中的目标PHP版本(如PHP 7.4),并安装PHP及常用扩展:
sudo yum-config-manager --enable remi-php74 # 切换版本时修改为对应版本(如remi-php80)
sudo yum install php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-curl php-xml php-bcmath -y
PHP-FPM的进程管理直接影响并发处理能力,需根据服务器内存调整以下参数(配置文件路径:/etc/php-fpm.d/www.conf):
dynamic(动态调整进程数,适合大多数场景):pm = dynamic
(可用内存 - 1G) / 单个PHP进程内存,如2GB内存、单个进程100M,则设置为19):pm.max_children = 50 # 示例值,需根据实际情况调整
min_spare_servers)和最大(max_spare_servers)空闲进程,避免频繁创建/销毁进程:pm.start_servers = 5 # 启动时的进程数
pm.min_spare_servers = 5 # 最小空闲进程数
pm.max_spare_servers = 35 # 最大空闲进程数
request_terminate_timeout = 30s # 脚本超时时间(秒)
pm.max_requests = 500 # 每个子进程处理500个请求后重启(释放内存)
修改后重启PHP-FPM使配置生效:
sudo systemctl restart php-fpm
核心参数优化需平衡性能与资源占用(配置文件路径:/etc/php.ini):
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 50M
post_max_size = 50M # POST数据最大大小(需大于等于upload_max_filesize)
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
date.timezone = "Asia/Shanghai" # 根据实际情况调整
OPcache通过缓存预编译脚本,显著提升PHP执行速度(需确保php.ini中已加载opcache.so,默认已启用):
[opcache]
zend_extension=opcache.so # 确保该行未被注释
opcache.enable=1 # 开启OPcache
opcache.memory_consumption=128 # OPcache缓存大小(MB,根据内存调整)
opcache.interned_strings_buffer=8 # 内部字符串缓存大小(MB)
opcache.max_accelerated_files=4000 # 缓存文件数量(需覆盖应用所有PHP文件)
opcache.revalidate_freq=60 # 文件修改后重新验证的时间间隔(秒)
验证OPcache是否生效:
php -i | grep "opcache.enable"
# 输出应为:opcache.enable => On => On
调整Linux内核参数提升PHP-FPM的I/O与网络性能(配置文件路径:/etc/sysctl.conf):
vm.swappiness = 10 # 减少交换分区使用(0-100,值越小越优先使用物理内存)
fs.file-max = 100000 # 增加系统最大文件描述符数量
net.core.somaxconn = 65535 # 增加服务器套接字最大连接数
应用内核参数:
sudo sysctl -p
确保Web服务器与PHP-FPM高效集成:
auto表示根据CPU核心数自动设置),启用Gzip压缩:worker_processes auto;
events {
worker_connections 1024; # 每个worker的最大连接数
}
http {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# PHP-FPM集成配置(确保fastcgi_pass指向正确socket)
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
使用工具监控PHP性能,根据实际情况调整配置:
top、htop查看CPU、内存使用情况;vmstat 1查看系统级性能指标。www.conf中开启状态页(需配置Nginx/Apache访问权限),查看进程数、请求处理时间等:pm.status_path = /status
访问http://your-server/status查看状态(需配置Web服务器权限)。/var/log/php_errors.log(PHP错误日志)和PHP-FPM日志(/var/log/php-fpm/error.log),定位性能瓶颈。通过以上步骤,可显著提升CentOS上PHP应用的性能与稳定性。需根据实际应用场景(如流量、内存大小)调整参数,避免盲目增大配置导致资源浪费。