PHP 502 错误原因请教
資深大佬 : sadfQED2 0
个人理解,当 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 个成功。
是否有大佬讲一讲,或者给个关键词也行,感谢
大佬有話說 (0)