php发展

首页 » 常识 » 常识 » 线上Nginx502BadGateway
TUhjnbcbe - 2022/8/15 18:24:00

今天一个接口,不理解一个逻辑很简单的接口怎么会失败。因为我们的的架构是ofe+nginx+php,熟悉这个架构的人都知道,错误码通常是php-fpm对应的fastcgi进程处理不过来请求导致的。

状态码也叫网关错误,通常是因为并发请求高超过php-fpm处理能力,导致nginx没有从upstream收到正确的返回结果。

nginx

从上面的图中可以看到,upstream_time超过了5s,而正常的请求只需要10ms左右。乍一看像是超时,因为nginx.conf里面配置的fastcgi_connect_timeout是5s。

upstream上的nginx日志同样是,和ofe上基本一样。

从nginxerror.log可以看出似乎是phpfastcgi没有按时返回结果。

php

问题大概率是出在php层或者业务代码。查看php7-fpm-error.log日志发现问题时间点fastcgi出现过重启。

一度怀疑是php出问题了。

php-fpm允许的最大子进程数是,也就是同时有个fastcgi可以处理并发请求,如果超过了这个数就会出现雪崩,导致网关错误。但是查看机器负载和当时的请求数,还没有那么多。

接着分析pool.d/php7-

1
查看完整版本: 线上Nginx502BadGateway