企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# recv() failed ## 报错内容: >2020/03/13 12:10:34 [error] 31720#0: *2661487 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 67.229.103.26, server: www.dyhjw.com, request: "POST /api/getHqLastInfo HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi-56.sock:", host: "www.dyhjw.com" ## 说明: 之前解决过这个问题,现在这个问题又重现了。看了阿里云负载均衡常见问题,有了更清晰的认识,链接文章如下:[https://help.aliyun.com/knowledge\_detail/55207.html?spm=a2c4g.11174283.6.695.325e1192wftz5C](https://help.aliyun.com/knowledge_detail/55207.html?spm=a2c4g.11174283.6.695.325e1192wftz5C) ## 原因: `PHP`脚本执行时间处理超时,即如果`php-fpm`处理`PHP`脚本的时长超过了`Nginx`中`request_terminate_timeout`设置的值,就会出现`502 Bad Gateway`的错误,同时在` Nginx`日志中可以查看到如下错误记录 >[error] 1760#0: *251777 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: localhost, request: “GET /timeoutmore.php HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000” ## 需要了解 参考文章:[https://blog.csdn.net/loophome/article/details/78604986](https://blog.csdn.net/loophome/article/details/78604986) ### 1、`php-fpm` 处理 `PHP`脚本时间,在哪里? 处理脚本的时间是:`max_execution_time` 位置在 `/www/server/php/56/etc/php.ini` ![](https://img.kancloud.cn/49/df/49df774aa546c13cb80c6e26ab83da56_621x215.png) ### 2、`nginx` 中的 `request_terminate_timeout` 的值是,在哪里? 答:`request_terminate_timeout` 配置在` php-fpm.conf` 中,位置在: `/www/server/php/56/etc/php-fpm.conf` 配置参数是: `request_terminate_timeout` 原先是`100`,我们更改为`300`: ![](https://img.kancloud.cn/c4/25/c425aa9e5827c65330e80187aac90988_446x473.png) ## 错误分析: 原因是: `max_execution_time=300` 执行时间大于 `request_terminate_timeout=100` 执行时间 一般可能执行时间都是小于100的,但当于100的话就报错! ## 解决方法 1、`php.ini` 把 `max_execution_time` 值调大一些,由 `300`调整为 `600` 2、`php-fpm.conf` 把 `request_terminate_timeout` 值调大一些,由 `100` 调整为 `0` (PS:0为无限制!) ## 涉及命令 1、`vim /www/server/php/56/etc/php.ini` 查找 `max_execution_time` 2、`vim /www/server/php/56/etc/php-fpm.conf` 查看 `request_terminate_timeout` 3、重新启动 `php5.6`