lnmp环境下的 php-fpm参数优化

php-fpm进程设置多少合适,设成动态还是静态?

1、把你的PHP FastCGI子进程数调到100或以上,在4G内存的服务器上200就可以(建议压力测试来得出自己服务器合理的值)(未测试,自行测试)

  1. socket连接FastCGI,/dev/shm是内存文件系统,socket放在内存中肯定会快些

最好修改 php-fpm中 listen.backlog = 2048 可以提供性能,测试参考

  1. Linux下增加文件打开数,命令如下:
1.  cat >> /etc/security/limits.conf <<EOF
2.  * soft nproc 65535
3.  * hard nproc 65535
4.  * soft nofile 65535
5.  * hard nofile 65535
6.  EOF
  1. 增加 PHP-FPM 打开文件描述符的限制:
1.  # vi $php_install_dir/etc/php-fpm.conf
2.  rlimit_files = 51200
  1. 使用php代码加速器,例如 eAccelerator, XCache.在Linux平台上可以把cache_dir指向 /dev/shm

/usr/local/php/etc/php-fpm.conf重要优化参数详解:

  1. pm = dynamic

pm参数指定了进程管理方式,有两种可供选择:static或dynamic,从字面意思不难理解,为静态或动态方式。如果是静态方式,那么在php-fpm启动的时候就创建了指定数目的进程,在运行过程中不会再有变化(并不是真的就永远不变);而动态的则在运行过程中动态调整,当然并不是无限制的创建新进程,受pm.max_spare_servers参数影响;动态适合小内存机器,灵活分配进程,省内存。静态适用于大内存机器,动态创建回收进程对服务器资源也是一种消耗

以下是我的机器配置(2G内存)

  1. pm.max_children = 50

static模式下创建的子进程数或dynamic模式下同一时刻允许最大的php-fpm子进程数量

3 pm.start_servers = 30

#动态方式下的起始php-fpm进程数量

  1. pm.min_spare_servers = 24

#动态方式下服务器空闲时最小php-fpm进程数量

  1. pm.max_spare_servers = 50

#动态方式下服务器空闲时最大php-fpm进程数量

一般php-fpm进程占用20~30m左右的内存就按30m算。如果单独跑php-fpm,动态方式起始值可设置物理内存Mem/30M,由于大家一般Nginx、MySQL都在一台机器上,于是预留一半给它们,即php-fpm进程数为$Mem/2/30。

LNMP在一台机器上参数(仅供参考,建议压力测试得出):

1.  Mem=`free -m | awk ‘/Mem:/{print $2}’` #我的机器内存是2012M
2.  sed -i “s@^pm.max_children.*@pm.max_children = $(($Mem/2/20))@” $php_install_dir/etc/php-fpm.conf
3.  sed -i “s@^pm.start_servers.*@pm.start_servers = $(($Mem/2/30))@” $php_install_dir/etc/php-fpm.conf
4.  sed -i “s@^pm.min_spare_servers.*@pm.min_spare_servers = $(($Mem/2/40))@” $php_install_dir/etc/php-fpm.conf
5.  sed -i “s@^pm.max_spare_servers.*@pm.max_spare_servers = $(($Mem/2/20))@” $php_install_dir/etc/php-fpm.conf

2012M内存:

1.  pm = dynamic
2.  pm.max_children = 50
3.  pm.start_servers = 30
4.  pm.min_spare_servers = 24
5.  pm.max_spare_servers = 50

原文:NODELOG

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在实际的开发和应用中偶发的502,504让人头痛,下面转发一个写的比较全面的。 PHP-fpm PHP-FPM是一...
    daos阅读 7,022评论 2 18
  • php-fpm优化方法 php-fpm存在两种方式,一种是直接开启指定数量的php-fpm进程,不再增加或者减少;...
    小慕先森阅读 3,994评论 0 0
  • php-fpm优化参数介绍 他们分别是:pm、pm.max_children、pm.start_servers、p...
    似水牛年阅读 5,160评论 0 2
  • 需要清楚的几个概念: FPM进程:进程数在php-fpm.ini中设置。没有设置 max_requests ,那么...
    fujun_195a阅读 8,178评论 1 13
  • 对于PHP-fpm一直只知道其配置和一个基本的概念,但是一直没有认真的去理解这个管理器,现在我们一起认识一下一下。...
    jack_jt_z阅读 4,079评论 1 0