php-fpm.conf配置优化

  配置文件路径:/php/etc/php-fpm.conf  或  /php/etc/php-fpm.d/www.conf
 
  在NGINX+PHP的Web服务器中,需要根据硬件情况配置有关参数,涉及的配置项主要有以下几个:

; 使用哪种方式管理php-fpm进程,可选值:dynamic=动态(小内存推荐)|static=静态(大内存推荐)
pm = dynamic

; 静态(static)管理方式下的php-fpm进程数量(固定)
pm.max_children = 300

; 动态(dynamic)管理方式下的php-fpm进程数量(起始、最小、最大)
pm.start_servers     = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35

; 单个php-fpm进程累计处理多少个请求后重启,为避免PHP脚本有内存泄漏问题,建议启用该设置(流量大可设置大一些)
pm.max_requests = 500

; 请求超过60秒则强制销毁php-fpm进程,防止资源得不到释放(最终造成502错误),可根据业务情况调整,例如需要上传大文件可将时间设长一些
request_terminate_timeout = 60s

  注意:无论使用哪种管理方式,{pm.min_spare_servers}和{pm.max_spare_servers}都不能大于{pm.max_children}。
 
  如果pm=static则只有pm.max_children参数生效,系统会开启{pm.max_children}个php-fpm进程并始终保持这个数量。
 
  如果pm=dynamic则pm.max_children参数会失效,同时后面3个参数生效控制php-fpm进程数。系统会在php-fpm运行开始的时候启动{pm.start_servers}个php-fpm进程,然后根据系统的需求动态在{pm.min_spare_servers}和{pm.max_spare_servers}之间调整php-fpm进程数。
 
  每个php-fpm进程占用内存大小通常是10MB~30MB之间,一般取平均值20MB来算。使用top命令查看剩余内存,用剩余内存除以20MB就可以算出理论上的最大php-fpm进程数,当然也不能直接设置理论数值,必须要留下一些内存,否则系统会因耗尽内存而崩溃。
 
  一般来说如果内存比较大(8GB以上)可以设置为静态方式,这样可以避免频繁开关php-fpm进程;内存比较小(2GB以下)最好设置为动态方式,避免php-fpm进程抢占其它应用的资源。
 
  如果在一台低配置服务器上同时运行NGINX、MySQL、PHP则更加要小心设置php-fpm的参数,例如一台2GB内存的服务器,除去系统本身和其它应用占用的资源后剩余可用资源就已经不多了,所以这些参数的数值不能设置得太大。

Copyright © 2024 码农人生. All Rights Reserved