温馨提示×

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.cnfinnodb_buffer_pool_size设为物理内存的50%-70%(如8GB内存设为4-6GB),innodb_log_buffer_size设为64MB-256MB(写密集场景)。
  • 连接管理max_connections根据并发量设置(如500-1000),wait_timeoutinteractive_timeout设为28800秒(8小时)减少空闲连接。
  • 查询优化:启用query_cache_type=0(MySQL 8.0+已移除),用EXPLAIN分析慢查询,优化索引避免全表扫描。
  • 磁盘I/Oinnodb_flush_method=O_DIRECT减少缓存开销,innodb_flush_log_at_trx_commit=2提升写入性能(非金融场景)。

连接优化

  • 使用持久连接:PHP代码中通过PDOmysqli设置PDO::ATTR_PERSISTENT=truemysqlip:前缀连接。
  • 连接池:考虑使用php-mysqlnd-ms扩展实现连接池,减少连接创建开销。

监控与调优

  • 定期查看slow_query_log定位慢查询,使用pt-query-digest分析。
  • 通过tophtop监控服务器负载,根据资源使用情况调整参数。

0