温馨提示×

Ubuntu PHP-FPM与MySQL的性能调优

小樊
37
2025-08-27 18:23:33
栏目: 云计算

PHP-FPM性能调优

  1. 配置进程管理
    • 编辑 /etc/php/{version}/fpm/pool.d/www.conf,调整 pm.max_children(根据服务器内存调整,建议为可用内存/单个进程内存)、pm.start_servers(建议为CPU核心数4倍)、pm.min/max_spare_servers(建议为CPU核心数2-4倍)。
    • 启用动态模式(pm=dynamic),适合负载波动场景。
  2. 启用缓存与优化
    • 启用OPcache缓存字节码:在 php.ini 中设置 opcache.enable=1,并配置内存大小(如 opcache.memory_consumption=128M)。
    • 开启慢日志:设置 request_slowlog_timeout=1s,记录慢查询脚本路径。
  3. 优化请求处理
    • 调整 request_terminate_timeout(如60秒),防止长时间占用资源。
    • 使用Unix Socket替代TCP连接(fastcgi_pass unix:/run/php/php{version}-fpm.sock),提升通信效率。

MySQL性能调优

  1. 配置文件优化
    • 编辑 /etc/mysql/mysql.conf.d/mysqld.cnf
      • innodb_buffer_pool_size:设置为服务器内存的50%-70%,提升数据读取效率。
      • innodb_log_file_size:建议256M-1G,平衡写入性能与恢复速度。
      • max_connections:根据并发量调整(建议100-500),避免连接数过多导致阻塞。
      • 启用查询缓存(query_cache_type=1query_cache_size=64M),但注意高并发场景可能引发锁竞争。
  2. SQL与索引优化
    • 为高频查询字段添加索引,避免全表扫描。
    • 使用 EXPLAIN 分析慢查询,优化JOIN、子查询等复杂语句。
    • 避免在SQL中使用函数计算,确保索引可用性。
  3. 系统级优化
    • 使用SSD存储提升I/O性能,避免使用HDD。
    • 定期执行 OPTIMIZE TABLE 整理表碎片,释放空间。

协同优化建议

  • 连接管理:PHP-FPM中使用持久连接(如 mysqli://p:localhost),减少MySQL连接开销。
  • 监控工具:通过 htopmysqltuner 等工具监控资源使用情况,动态调整参数。
  • 硬件升级:若性能瓶颈明显,可升级CPU、内存或SSD,优先提升内存以支持更大的缓冲池。

注意:修改配置后需重启服务(sudo systemctl restart php{version}-fpmsudo systemctl restart mysql),并优先在测试环境验证效果[1,3,4,5,6,7,8,9,10,11]。

0