服务器之家:专注于服务器技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟服务器|服务器安全|DNS服务器|服务器知识|

服务器出现504 Gateway Time-out的解决方法!

2019-08-30 11:53服务器之家 服务器知识

对于一个Web开发者来说, 504 和502问题看上去好像很简单,每个人也可能都遇到过,但把问题说清楚并不那么容易,腾佑科技小编也希望这篇文章能够帮助您。 两台设备只要通过proxy或fastcgi协议互相通信,都会遇到504问题,比如

对于一个Web开发者来说,504和502问题看上去好像很简单,每个人也可能都遇到过,但把问题说清楚并不那么容易,腾佑科技小编也希望这篇文章能够帮助您。

两台设备只要通过proxy或fastcgi协议互相通信,都会遇到504问题,比如Nginx+PHP-FPM会遇到;代理服务器连接后端Web服务也会遇到。我本次遇到的场景属于后者,重点讲解代理导致的504问题。

服务器出现504 Gateway Time-out的解决方法!

那到底上面是504错误呢,看下wiki的引用:

4 Gateway Timeout

The server was acting as a gateway or proxy and did not receive a timely response from the upstream server

它的意思就是一个网关或代理服务器能够连接后端服务器,但在读取服务器响应的时候超时了。遇到504问题一般是后端服务的问题,比如:

后端进程无故退出了(可能是代码异常,也可能是apache或nginx进程异常),导致代理服务器接收不到后端响应。

后端响应缓慢,导致代理服务器接收后端响应超时了。

服务器出现504 Gateway Time-out的解决方法!

按照上述可能的两个情况,逐一分析。

(1)x.php程序在特定的情况下,确实运行缓慢,但apache的access log在25秒左右的时候成功记录了200访问日志(由于php代码执行结束后才记录日志,一开始可能看不到access日志,导致开始误认为是后端程序的问题)。

(2)在x.php程序中记录应用日志,应用日志和access log日志一样,没有任何异常。

这说明代码并没有问题(但程序执行时间过长,有优化的空间),虽然在20秒产生504错误(由nginx处理),后端代码进程仍然继续运行,并在25秒成功运行。

排除这个问题后,最有可能是代理服务器觉得后端响应过于缓慢,主动关闭了该连接,是不是代理服务器设置的超时时间过短?由于公司的代理服务器(ssl nginx)是由专人维护的,看不到具体的配置,邮件询问了同事,得到回复如下:

proxy_read_timeout 60

proxy_send_timeout 60

首先看下 proxy_read_timeout 的官方介绍:

Defines a timeout for reading a response from the proxied server. The timeout is set only between two successive read operations, not for the transmission of the whole response. If the proxied server does not transmit anything within this time, the connection is closed.

最后将该值修改为:

proxy_read_timeout 300

proxy_send_timeout 300

问题最终解决了,肯定是proxy读取超时了,但具体的配置仍然疑惑。

进一步测试

感兴趣的同学也可以进一步了解nginx的proxy配置,如果没有特殊的需求,配置非常简单。

server {

listen 443 ssl;

server_name www.simplehttps.com;

location / {

access_log access.log main;

error_log error.log;

proxy_pass http://127.0.0.1:8080;

proxy_read_timeout 5;

}

}

proxy_pass 可以是一个host、内部域名、ip地址,不用是一个对外的域名。

如果遇到超时问题,观察error.log日志,会看到以下错误:

2018/09/19 21:01:19 [error] 17034#0: *253 upstream timed out (110: Connection timed out) while reading response header from upstream, client: *.*.*.*, server: www.simplehttps.com, request: "GET /x.php HTTP/1.1", upstream: "http://*.*.*.*:8080/x.php", host: "www.simplehttps.com"

最后经过不断调整nginx的proxy_read_timeout指令和后端x.php程序的执行时间,也没有遇到工作中遇到的问题(20秒和60秒之间不对称的问题),只能后续继续留意了。

腾佑小编总结

1:网关和后端的超时时间(proxy或fastcgi)必须协调一致,在本案例中,apache/mod_php运行最长时间如果是30秒,那么nginx设置的超时时间必须大于30秒,因为必须考虑网络传输延时时间(非网络包总传输时间);而如果是nginx+php-fpm模式,nginx设置的超时时间相对简单,因为大部分情况下,nginx和php-fpm部署在同一台机器上,网络延时相对较短,但必须考虑php最大执行时间和php-fpm最大执行时间,

2:针对5**错误,可认为都是http错误码,都是服务器端的错误(相对于客户端),在遇到相关错误的时候,我们必须根据错误码判断可能存在的问题,然后再针对性的排查,否则排查时间会增加很多。

延伸 · 阅读

精彩推荐
  • 服务器知识服务器配置参数怎么看?服务器配置参数查看方法

    服务器配置参数怎么看?服务器配置参数查看方法

    我们登录服务器系统以后,这里以windows系统的服务器为例,进入系统以后可以在DOS窗口,进行使用命令快速的查看服务器的配置参数。 服务器配置参数查看方法 1、首先我们登录服务器系统以后,在服务器的左下角点击开始,进入...

    百度经验5132019-06-13
  • 服务器知识无服务器计算将改变关系数据库的游戏规则

    无服务器计算将改变关系数据库的游戏规则

    为了利用数据库空间的无服务器计算模式,首先需要分离数据体系结构的存储层和处理层。解耦存储和计算并不完全是一个新概念。这个想法已经在一定程度上在NoSQL和大数据分析空间(Amazon EMR,微软的Azure DLS和DLA等)以及各种关系数...

    今日头条1842019-08-07
  • 服务器知识揭示数据中心冷却的隐性成本

    揭示数据中心冷却的隐性成本

    行业专家表示,环境法规正在增加数据中心传统冷却方法的成本。那么数据中心运营商如何降低运营成本,并获得绿色资质认证?...

    企业网D1Net1232019-07-11
  • 服务器知识服务器设计方案之应用限流

    服务器设计方案之应用限流

    在一个高并发系统中对流量的把控是非常重要的,当巨大的流量直接请求到我们的服务器上没多久就可能造成接口不可用,不处理的话甚至会造成整个应用不可用。...

    优普学堂5152019-05-28
  • 服务器知识服务器硬盘是什么接口类型 服务器硬盘和普通硬盘区别

    服务器硬盘是什么接口类型 服务器硬盘和普通硬盘区别

    服务器 硬盘 接口,都在一定程度上决定了产品的技术构造、传输性能等。您知道服务器硬盘接口有哪些种类吗?服务器硬盘接口包括SATA接口、SCSI接口、SAS接口、光纤接口4种。服务器硬盘怎么选?服务器硬盘和普通硬盘的区别是什么...

    IT百科1102019-05-20
  • 服务器知识服务器是租用还是服务器托管好?

    服务器是租用还是服务器托管好?

    很多企业在选择网站的服务器托管方案时都会感到特别地没头绪,是租用好呢,还是服务器托管好呢,这个问题一直以来都困扰着企业者。 其实这两者之间各有好坏,今天就为大家讲解一下这两者的区别,它们的各自优势和缺点是...

    天下数据1982019-05-16
  • 服务器知识五点告诉你怎么选择数据服务器

    五点告诉你怎么选择数据服务器

    我们应当都知道数据无价这个词,既然数据那么主要,选择一款安全稳定的数据服务器是很有必要的,那么如何选择一款牢靠的,稳定的数据服务器呢?我们从五个方面下手,协助您体系的了解数据库服务器对服务器硬件有哪些请求...

    小小飞猪i1122019-05-21
  • 服务器知识远程桌面连接命令怎么用

    远程桌面连接命令怎么用

    远程桌面连接命令 怎么用? 事实上,远程桌面连接命令很简单,就只有一个mstsc( http://www.zzvips.com/soft/201.html )搞定,但是想要真正连接上远程桌面是有前提的,下面一起来看一下。 远程桌面连接命令怎么用 想要进行远程桌面连接,...

    百度经验5502019-06-01