1. 升级PHP至最新稳定版本
使用新版本PHP可获得显著的性能改进(如PHP 8.x比7.x系列有更优的内存管理和执行效率)。通过Ondrej Sur的PPA添加最新PHP版本,避免系统默认仓库的滞后:
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-gd # 根据需求安装扩展
安装后重启PHP服务(如PHP-FPM)使版本生效。
2. 启用并优化OPcache(内置字节码缓存)
OPcache是PHP官方推荐的加速扩展,可缓存编译后的字节码,避免重复解析脚本。
php.ini中的注释或添加配置:[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1 # 允许CLI模式使用
opcache.memory_consumption=128 # 缓存内存大小(MB,根据服务器调整)
opcache.interned_strings_buffer=8 # 内置字符串缓冲区大小
opcache.max_accelerated_files=10000 # 最大缓存文件数
opcache.revalidate_freq=60 # 检查脚本更新的时间间隔(秒)
opcache.fast_shutdown=1 # 快速关闭,减少进程结束时间
sudo systemctl restart php8.2-fpm
3. 使用PHP-FPM替代传统进程管理
PHP-FPM(FastCGI Process Manager)比传统的mod_php更高效,支持进程池管理、动态调整进程数,减少内存消耗。
sudo apt install php8.2-fpm
/etc/php/8.2/fpm/pool.d/www.conf,优化以下参数:pm.max_children = 50 # 最大子进程数(根据服务器内存调整,如1GB内存约设20-30)
pm.start_servers = 10 # 启动时的子进程数
pm.min_spare_servers = 5 # 最小空闲子进程数
pm.max_spare_servers = 20 # 最大空闲子进程数
php8.2-fpm配置:sudo a2enconf php8.2-fpm
sudo systemctl restart apache2
若使用Nginx,确保Nginx配置中正确指向PHP-FPM socket(如fastcgi_pass unix:/run/php/php8.2-fpm.sock;)。4. 集成缓存系统(Redis/Memcached)
缓存频繁访问的数据(如数据库查询结果、会话数据),减少数据库负载和响应时间。
sudo apt install redis-server php-redis # 安装Redis服务器及PHP扩展
配置PHP使用Redis存储会话(/etc/php/8.2/fpm/php.ini):session.save_handler = redis
session.save_path = "tcp://localhost:6379"
sudo apt install memcached php-memcached
配置类似Redis,修改session.save_path为"localhost:11211"。sudo systemctl restart php8.2-fpm
5. 优化Web服务器配置
根据使用的Web服务器(Apache/Nginx)调整参数,提升静态文件处理能力和并发性能。
mod_deflate(压缩)和mod_expires(缓存),编辑/etc/apache2/apache2.conf:<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css application/json application/javascript
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/html "access plus 1 hour"
ExpiresByType image/jpeg "access plus 7 days"
</IfModule>
worker_processes(设为CPU核心数)、worker_connections(每个进程的最大连接数),编辑/etc/nginx/nginx.conf:events {
worker_connections 1024;
}
http {
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_types text/plain text/css application/json application/javascript;
}
重启Web服务器使配置生效。6. 优化PHP代码与数据库
eval()、全局变量和多层循环;使用内置函数(如array_map替代foreach遍历数组);合理使用数据类型(如整数比字符串运算更快)。SELECT *,只查询必要字段);使用连接池(如mysql_pconnect或PDO的持久连接)减少连接开销。7. 监控与持续调优
使用工具定位性能瓶颈,针对性优化:
top(实时查看CPU/内存使用)、htop(增强版top)、vmstat(监控系统整体性能),观察资源瓶颈(如CPU过高则需优化代码,内存不足则增加pm.max_children)。