当访问一个接口出现这个错误时 504 Gateway Time-out , 说明是后端服务超时了 , 

504是gateway timeout 网关超时 , 如果fpm响应的太慢 , 超过了nginx里面配置的fastcgi_read_timeout  超时时间  , 就会出现这个错误

 

可以有以下处理流程

首先查看nginx的access日志 , 看看接口请求是否到达了

tail -f /var/log/nginx/xxxx-access.log 

[PHP] 504 Gateway Time-out处理流程_PHP

 

 可以得知nginx部分已经到达

 

后端是php-fpm , 可以查看fpm的error日志

tail -f /var/log/php-fpm/www-error.log

[PHP] 504 Gateway Time-out处理流程_PHP_02

 

 基本可以知道在访问某个ldap服务的时候 , 连接超时不可达了

 

用tcpdump也可以看到三次握手的第一步 SYN请求就没有回应 , 也ping不通

tcpdump -i any host 10.210.97.21 -l -s 0

[PHP] 504 Gateway Time-out处理流程_PHP_03

 

 

重新更改接口地址后就ok了 

 

还有一种是502错误 , 出现502是因为下面的原因:

在fpm的配置php.ini配置文件中 

max_execution_time

以及fpm的配置文件比如www.conf中

request_terminate_timeout

 

这里是php里面设置的超时时间 , 如果超过了这个时间会报502错误