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

PHP 502 错误原因请教

  •  
  •   sadfQED2 · 2021 年 3 月 25 日 via Android · 487 次点击
    这是一个创建于 1844 天前的主题,其中的信息可能已经有所发展或是发生改变。

    个人理解,当 php-fpm 的任务队列达到 listen.backlog 配置的上限的时候,这个时候新任务无法加入 php-fpm 的任务队列就会出现 502 错误。

    因此我做了实验:将 php-fpm 设置为 static 模式(pm=static),进程数设置为 1 (pm.max_children=1),任务队列设置为 100 (listen.backlog=100),使用 3000 并发进行请求。

    php 代码

    
    usleep(100000); // 暂停 100 毫秒
    
    echo "success";
    
    

    预期:因为只有一个 fpm 进程,因此第一个请求被 fpm 接收后,后面 100 个请求将占满任务队列,因此应该成功 101 个请求,再后面所有的请求就都应该出现 502 错误。

    实际:成功了 113 个请求,其他全部为 502 错误(实验了很多次,都是这个结果)。

    猜想:nginx 在请求 php-fpm 的时候可能也有一个任务队列,这个队列会等待 php-fpm 的任务队列空闲,然后插入任务。

    提问:nginx 在请求 php-fpm 前是否真的有一个缓冲队列?如果有,这个队列是否有相关配置项?如果没有,为什么我实验中会出现 113 个成功请求,而不是 101 个成功。

    是否有大佬讲一讲,或者给个关键词也行,感谢

    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5605 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:53 · PVG 14:53 · LAX 23:53 · JFK 02:53
    ♥ Do have faith in what you're doing.