1概述
LNMP架构下 发生502 bad gateway 一般有两种情况
1,没有可用的php-fpm 没有可用的worker进程
2,脚本执行时间超过了 php-fpm request_terminate_timeout 设置的值 这时 worker进程会被kill 或者 request_terminate_timeout 设置的值过大 导致整个worker进程长时间工作不能释放 没有空闲的进程来处理请求从而报502
我们知道控制php脚本执行时间 有两个值 一个是php.ini 的 max_execution_time 和php-fpm 的request_terminate_timeout
我们可以分析下 超过最大请求时间报502错误的原因
2环境
为了测试的方便 可以将nginx 设置一个进程 php-fpm 设置 pm = static 模式 pm.max_children=1 request_terminate_timeout = 3
请求本地localhost/index.php 文件类容为sleep(20);
浏览器执行ocalhost/index.php

3分析
3.1先查看nginx 和 fpm错误日志


本文详细分析了在LNMP环境中遇到502 Bad Gateway错误的两种常见原因,包括PHP-FPM没有可用worker进程和脚本执行超时。通过查看错误日志、使用strace追踪进程,揭示了从浏览器请求到Nginx与PHP-FPM交互的完整过程,并介绍了如何通过strace分析PHP-FPM的worker进程状态。最后,讨论了TCP和UNIX Socket在Nginx与PHP-FPM通信中的应用和优劣。
最低0.47元/天 解锁文章
140

被折叠的 条评论
为什么被折叠?



