请知悉:本文最近一次更新为 5年 前,文中内容可能已经过时。

高并发时,会出现php-fpm线程不够用的情况,此时一般需要调整backlog,之前也分析过:如果worker进程不够用,master进程会prefork更多进程,
如果prefork达到了pm.max_children上限,worker进程又全都繁忙,这时master进程会把请求挂起到连接队列backlog里,而backlog默认值是511,除了加大pm.max_children,调整backlog也是有必要的。

下面举例优化策略(摘录自:https://my.oschina.net/kisops/blog/151079):
操作系统以CentOS为例,可通过默认配置 /etc/sysctl.conf 文件进行调整。比如:

    net.core.somaxconn = 1048576 # 默认为128
net.core.netdev_max_backlog = 1048576 # 默认为1000
net.ipv4.tcp_max_syn_backlog = 1048576 # 默认为1024

Nginx调整listen后的backlog值:

listen       80 backlog=8192; # 默认为511

php-fpm配置,调整www.conf里的listen.backlog:

listen.backlog = 8192 # 默认为-1(由系统决定)

如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《关于PHP-FPM的backlog的默认值》相关的博文:


留言

avatar
😀
😀😁😂😅😭🤭😋😘🤔😰😱🤪💪👍👎🤝🌹👌