1. 升级到最新稳定版PHP
使用最新PHP版本可获得性能改进与安全修复。通过添加Ondřej Surý的PPA源安装最新版:
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.1 # 根据需求选择版本(如8.0/8.2)
2. 安装并配置PHP-FPM
PHP-FPM(FastCGI Process Manager)比传统mod_php更高效,适合高并发场景。
sudo apt install php8.1-fpm
/etc/php/8.1/fpm/pool.d/www.conf,根据服务器资源调整参数:
pm:选择dynamic(动态调整进程数,适合负载波动大的环境);pm.max_children:最大子进程数(建议设为服务器内存的1/5,如8GB内存设为16);pm.start_servers:启动时的子进程数(设为pm.max_children的1/4,如4);pm.min_spare_servers/pm.max_spare_servers:空闲进程的最小/最大数量(设为pm.max_children的1/8,如2);pm.max_requests:每个子进程处理的最大请求数(避免内存泄漏,如500)。listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data
3. 启用并优化OPcache
OPcache缓存PHP脚本编译后的字节码,减少重复编译,显著提升性能。
sudo apt install php8.1-opcache
php.ini(/etc/php/8.1/fpm/php.ini):[opcache]
zend_extension = opcache.so
opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 128 # OPcache使用的内存(MB,根据服务器内存调整)
opcache.interned_strings_buffer = 8 # 内部字符串缓冲区大小(MB)
opcache.max_accelerated_files = 4000 # 加速的文件数量(根据项目文件数调整)
opcache.revalidate_freq = 60 # 脚本重新验证的时间间隔(秒)
opcache.fast_shutdown = 1 # 快速关闭,减少内存释放时间
4. 调整PHP基础配置
根据应用需求优化php.ini(/etc/php/8.1/fpm/php.ini),避免资源浪费:
memory_limit:每个PHP脚本的最大内存(如256M,根据应用复杂度调整);max_execution_time:脚本最大执行时间(如30秒,避免长时间运行阻塞进程);post_max_size/upload_max_filesize:POST数据与上传文件的最大大小(如50M,适应文件上传需求);error_log:错误日志路径(如/var/log/php8.1-fpm/error.log,便于排查问题)。5. 集成缓存系统(Redis/Memcached)
使用Redis或Memcached缓存数据库查询结果、会话数据等,减少数据库访问次数。
sudo apt install redis-server php8.1-redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$data = $redis->get('cached_key');
if (!$data) {
$data = fetchDataFromDatabase(); // 从数据库获取数据
$redis->set('cached_key', $data, 3600); // 缓存1小时
}
6. 优化Web服务器配置
/etc/nginx/sites-available/default),添加PHP处理规则:location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
proxy_fcgi与setenvif模块,编辑虚拟主机配置:<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
</FilesMatch>
7. 监控与持续调优
使用工具监控PHP-FPM与系统性能,识别瓶颈:
htop(查看CPU/内存使用)、tail -f /var/log/php8.1-fpm.log(查看错误日志);www.conf中启用pm.status_path = /status,通过Nginx访问/status查看进程状态;