- 首页 >
- 问答 >
-
云计算 >
- Ubuntu PHP-FPM与MySQL的性能优化
Ubuntu PHP-FPM与MySQL的性能优化
小樊
44
2025-08-09 12:45:43
PHP-FPM优化
- 进程管理:修改
/etc/php/7.x/fpm/pool.d/www.conf,采用dynamic模式,根据服务器资源调整pm.max_children(建议为CPU核心数×2)、pm.start_servers(建议为CPU核心数)、pm.min/max_spare_servers(建议为CPU核心数的1-2倍),并设置pm.max_requests(如500-1000)控制进程重启频率。
- 性能加速:启用OPcache缓存字节码,编辑
php.ini设置opcache.memory_consumption(如256MB)、opcache.enable=1。
- 超时与日志:设置
request_terminate_timeout(如60秒)防止慢请求阻塞,开启slowlog记录慢脚本。
MySQL优化
- 内存配置:调整
/etc/mysql/my.cnf,innodb_buffer_pool_size设为物理内存的50%-70%(如8GB内存设为4-6GB),innodb_log_buffer_size设为64MB-256MB(写密集场景)。
- 连接管理:
max_connections根据并发量设置(如500-1000),wait_timeout和interactive_timeout设为28800秒(8小时)减少空闲连接。
- 查询优化:启用
query_cache_type=0(MySQL 8.0+已移除),用EXPLAIN分析慢查询,优化索引避免全表扫描。
- 磁盘I/O:
innodb_flush_method=O_DIRECT减少缓存开销,innodb_flush_log_at_trx_commit=2提升写入性能(非金融场景)。
连接优化
- 使用持久连接:PHP代码中通过
PDO或mysqli设置PDO::ATTR_PERSISTENT=true或mysqli的p:前缀连接。
- 连接池:考虑使用
php-mysqlnd-ms扩展实现连接池,减少连接创建开销。
监控与调优
- 定期查看
slow_query_log定位慢查询,使用pt-query-digest分析。
- 通过
top、htop监控服务器负载,根据资源使用情况调整参数。