V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ioioioioioioi
V2EX  ›  问与答

PHP -FPM 502 如何解决

  •  
  •   ioioioioioioi · 2020-03-19 09:09:01 +08:00 · 1072 次点击
    这是一个创建于 1504 天前的主题,其中的信息可能已经有所发展或是发生改变。
    通过下面的日志,增加 pm.max_children 数字的确可以减少 502 的发生,但是,已经加到 300 了,还是会达到这个数字。网站流量也不大,怀疑是某个 PHP 运行出了点问题,大家知道怎么定位解决吗?

    # php7.1-fpm.log
    [19-Mar-2020 08:07:19] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 46 idle, and 137 total children
    [19-Mar-2020 08:12:44] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 48 idle, and 164 total children
    [19-Mar-2020 08:17:20] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 46 idle, and 243 total children
    [19-Mar-2020 08:27:04] WARNING: [pool www] server reached pm.max_children setting (300), consider raising it


    # php.ini 配置
    pm = dynamic
    pm.max_children = 300
    pm.start_servers = 75
    pm.min_spare_servers = 50
    pm.max_spare_servers = 100
    pm.max_requests = 1000
    3 条回复    2020-03-19 09:41:43 +08:00
    justfindu
        1
    justfindu  
       2020-03-19 09:11:41 +08:00
    你可能需要优化你的代码或许其中有一些堵塞
    b821025551b
        2
    b821025551b  
       2020-03-19 09:13:50 +08:00
    把 slow log 打开,可能是一直在阻塞导致不断地申请新 child 导致不足。
    dilu
        3
    dilu  
       2020-03-19 09:41:43 +08:00 via Android
    我们线上机器 32 核 64,php 最大子进程 800,你可以参考参考。
    子进程并非越大越好,每个进城处理的连接数限制为 5000 试试 记得开一下 fpm 的慢日志看看是不是代码有问题,也有可能是数据库或者别的组件甚至是网络问题。
    给你个建议,出现诡异的情况先想想基础建设的问题,例如硬件,网络,磁盘,交换机等等。然后再考虑应用的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   974 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 23:18 · PVG 07:18 · LAX 16:18 · JFK 19:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.