动态ip

>

代理ip软件

>

换ip软件

>

HTTP代理

>
Socks5代理
黑核动态ip代理
您的位置: 首页 > 新闻资讯 > 正文

代理服务器和Web服务器通信中的504问题

发布时间:2019-12-03 14:55:07 来源:黑核动态ip代理

分享到

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

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

  问题分析

  为了把问题说清楚,先介绍下我单位服务部署架构,如下图:

代理服务器和Web服务器通信中的504问题

  图2

  很多读者看到https访问,猜测504问题是不是因它而起,实际上完全没有关系,但整个部署架构却因为引入了ssl,导致系统复杂化了。未来ssl肯定是主流,如果你这张图的部署感兴趣,可以看看我的新书《深入浅出HTTPS:从原理到实战》,里面描述的很详细,此处也算作个广告。

  在本文引入这张图的根本原因是想让读者能够清晰的了解我遇到的问题,如果没有这张图,读者在理解的时候会很困难。但也不要想的过于复杂,简单理解就是nginx作为代理服务器连接后端的web服务器(apache/mod_php)。

  接下来描述具体遇到问题,在浏览器中访问https://mail.sina.net/x.php的时候,该接口上传文件然后存储到阿里云OSS上,如果传输的文件非常大,执行时间将会很长,一旦到20秒到时候,必然会出现出现504错误,具体如下图:

代理服务器和Web服务器通信中的504问题

  图2

  顺带说一下,其他页面和接口没有遇到该问题,在那一刻会怀疑是不是x.php程序处理有问题(大部分人会这么理解)。

  那到底上面是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进程异常),导致代理服务器接收不到后端响应。

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

  解决问题

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

  (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.

  介绍的很详细了,得到这个答复我就很疑惑了,超时时间是60秒,但504在20秒的时候就产生了,大大的问号悬我脑袋上,又仔细看了下官方文档,是不是proxy_read_timeout参数的值写的不严谨,官方写的是60s,可即使写错了,nginx默认的超时时间也是60秒;是不是nginx版本默认超时时间不一致?官方文档也并没有对该指令有特殊的说明。

  最后同事将该值修改为:

  proxy_read_timeout 300

  proxy_send_timeout 300

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

  进一步测试

  由于我看不到公司代理服务器的具体配置,所以我安装了一个代理服务器,感兴趣的同学也可以进一步了解nginx的proxy配置,如果没有特殊的需求,配置非常简单。

  server{

  listen 443 ssl;

  server_name www.simplehttps.com;

  location/{

  access_log logs/access.log main;

  error_log logs/error.log;

  proxy_pass http://inter.www.simplehttps.com;

  proxy_read_timeout 5;

  }

  }

  inter.www.simplehttps.com可以是一个host或内部域名,不用是一个对外的域名。

  如果遇到超时问题,观察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://*.*.*.*:80/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最大执行时间,后续我会写一篇关于php-fpm和php之间协调工作的文章。

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


相关资讯

实用https代理服务器别人能查到真实地址吗

现在,高匿代理ip时代已经到来,但是,还是有很多人不了解高匿代理ip到底有什么用,虽然随着网络科技的发展,网络对我们的生活带来了很多方便,也带来了更多的选择,网

来源:黑核混拨ip加速器网

2018-12-28 17:02:47

什么是代理服务器?代理服务器有什么用?

代理服务器(ProxyServer)是一种重要的服务器安全功能,它的工作主要在开放系统互联(OSI)模型的会话层,从而起到防火墙的作用。代理服务器大多被用来连接

来源:黑核混拨ip代理

2019-01-21 10:58:07

IP代理服务器怎样才能够满足客户的需求?

近几年来,代理服务器的发展越来越迅速,很多人都掌握了网络托管的常识,在办理网站时服务器也是必不可少的,而且代理服务器网站为客户提供资源选择使代理服务器随着市场的

来源:黑核混拨ip代理

2019-03-27 14:17:04

如何判断代理服务器列表中的好坏?

如何判断代理服务器列表中的好坏?基本上一个较为正规或成熟的代理服务器平台,他们都会有专业的技术团队和客服售后,而且这些很容易使他们的综合水平考察范围,因此我们可

来源:黑核混拨ip代理

2019-03-28 16:40:53

如何使用代理服务器增强安全性和性能

什么是代理服务器地址?代理是替代,顶替。在因特网世界中,代理服务器充当具有私有IP地址的web浏览器(计算机)与因特网上的另一服务器之间的中介。代理服务器有自己

来源:黑核混拨ip代理

2019-04-01 17:31:48

如何使用代理服务进行质量广告系列检查

随着数字出版商在间接渠道中变得更加活跃,他们越来越多地接触到全球广告市场。对于过去只在美国工作的团队来说,这意味着更多的责任与更低的可见度。如果您的AdOps小

来源:黑核混拨ip代理

2019-04-02 11:22:03

代理服务器如何操作?有哪些风险?

近日有不少用户咨询我们代理服务器方面的问题,小编针对这些问题做了一些整理。今天就和大家简单的介绍一下代理服务器那些事儿。什么是代理服务器?代理服务器充当您和互联

来源:黑核动态ip代理

2019-04-04 11:01:41

代理服务器和Web服务器通信中的504问题

对于一个Web开发者来说,504和502问题看上去好像很简单,每个人也可能都遇到过,但把问题说清楚并不那么容易,也希望这两篇文章能够帮助您。两台设备只要通过pr

来源:黑核动态ip代理

2019-12-03 14:55:07

国内好用又实惠的https代理ip服务器不要错过了

随着大数据时代的到来,爬虫已经成了获取数据的必不可少的方式,在使用爬虫多次爬取同一网站时,经常会被网站的IP反爬虫机制给禁掉,为了解决封禁IP的问题,通常会使用

来源:黑核混拨ip加速器网

2018-12-28 16:55:02

黑核混拨IP加速器轻松解决怎么修改手机ip地址问题

有些视频播放站很坑,一天只能观看几个视频就需要开通会员才能看了,但是我们又不想冲会员怎么办,那就需要修改手机IP地址了,但是怎么修改手机IP地址呢?不是谁都懂的

来源:黑核混拨ip加速器网

2018-12-25 17:39:01

IP加速器的使用方法和简单问题解决办法

IP加速器,顾名思义就是加速IP,提升网络性能,降低网络延迟。黑核混拨ip加速器是一款ip量大速度快的加速器,非游戏外挂,可以放心使用。IP加速器的客户端设置简

来源:黑核混拨ip加速器网

2018-12-28 10:21:44

在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
客服电话
13318873961