Http状态码502问题复盘

阿里 阅读:915 2020-02-19 11:15:32 评论:0
问题原因分析:502 bade gateway 一般都是upstream出错,对于PHP,造成502的原因常见的就是脚本执行超过timeout设置时间,或者timeout设置过大,导致PHP进程长时间不能释放。
控制PHP脚本执行时间的配置有两种:
  1. php.ini文件中max_execution_time(全局配置)
  2. php-fpm.conf中request_terminate_timeout
如果这两个配置都有设置,那么系统只会执行php-fpm.conf中的设置(优先级php-fpm.conf>php.ini)
 
下面让服务器报出502的状态码:
  1. 配置php-fpm.conf中的request_terminate_timeout(该项真正的位置是在www.conf中)为3s ,配置完成后记得重启php-fpm进程(centos7下重启:systemctl restart php-fpm)
         
  1. 在项目根目录下写一个test.php 测试脚本代码如下:
sleep(10);
echo '123';
  1. 浏览器访问http://www.flyeagle.club/test.php 结果如下:
  2. 查看谷歌浏览器的调试工具显示:
解决方案:
1.适当增大php脚本执行时间,通过修改php.ini或php-fpm.conf来配置
2.从根本原因出发,定位php脚本, 查出真正导致php执行时间过长的原因(循环嵌套过多,数据库死锁)
3.高并发的话考虑php-fpm.conf中的max_children最大子进程数
4.是否启动php-fpm

标签:程序员
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号