php fpm高并发,PHP-fpm 高并发下挂掉

服务器环境:CentOS7+nginx1.16+php7.0+mysql8.0

服务器的网站在高并发时偶尔会挂掉,nginx报502

f97a0a4431b0290ebaf23cf4f0bb1a98.png

重启php-fpm后恢复正常,经过数次错误被客户投诉后,下定决心要解决这个问题

既然是重启php-fpm后恢复正常,那就从php着手。

1、找到php的错误日志文件,查看vi /var/log/php-fpm/error.log

发现大量warning

d7c8a52f2518474e4f215d22402b38f0.png

错误提示建议增加pm.start_servers数量

2、找到php-fpm的配置文件vi /etc/php-fpm.d/www.conf

修改以下几个值,改大一些

当服务器内存较小时,使用php默认的dynamic(动态)模式#动态方式,子进程的数量根据以下指令动态设置:pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers

pm = dynamic

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

pm.max_children = 15

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

pm.start_servers = 15

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

pm.min_spare_servers = 10

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

pm.max_spare_servers = 40经验人士的总结:

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

当服务器内存较大时,使用static(静态模式),如本服务器内存是16G,便可以使用此模式#静态方式,子进程的数量由pm.max_children确定

pm = static

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

pm.max_children = 256

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值