记录接口请求偶发504 Gateway Time-out问题

项目场景:

我们将服务部署到A公司服务器中,使用了共五台服务器,分别是:1.NG服务器 2.日志服务器 3.缓存服务器 4.应用服务器1 5.应用服务器2 。而请求过来首先到达的是他们的物理代理服务器,然后再转发请求到我们的ng服务器,然后再到应用服务器。


问题描述

接口请求经常会网络繁忙,报504 Gateway Time-out,然后返回了个.
在这里插入图片描述


原因分析:

  1. 网络带宽问题:
    检查了下带宽,总带宽700M,峰值也才400M,同网络下其他服务并未出现该情况,所以暂时排除网络带宽问题

  2. ng配置问题:
    那么有没有可能是我们ng配置问题呢,检查了下我们的nginx.conf配置文件,发现配置的worker_connections足足有10240个,和我们云服务上的一样,所以也排除掉我们ng服务的问题

  3. 服务性能问题:
    基本所有接口都会发生这样的问题,同一个接口同样的数据,不同时间请求是偶发的出现网络繁忙,而且我们在云服务器也部署了同样的系统,并没有出现过这样的情况,所以排除服务性能问题

  4. 其他:
    剩下的最大可能就是请求到达的第一个物理代理机的问题了。由于我们系统是B2B2C的,所以请求量比较大,在现场排查之后,发现大量请求停留在SYN_RECV,没有分发到我们的代理服务器去,问题确定,由于请求量大服务器负载高,每次请求过来就需要建立TCP连接,然后请求结束后又需要关闭连接,开销大。


解决方案:

调整了这个物理代理机上的nginx配置的keepalive参数,完成以下几点:

  • 减少连接建立时间:keepalive参数允许Nginx在一定时间内保持与后端服务器的连接处于活动状态,而不是在每个请求之后立即关闭连接。这可以减少连接建立时间,因为Nginx不需要在每个请求之前重新建立TCP连接。
  • 减少后端服务器负载:通过保持与后端服务器的连接处于活动状态,keepalive参数可以减少后端服务器的连接建立和关闭的开销。这可以降低后端服务器的负载,从而减少SYN_RECV状态的问题。
  • 优化网络带宽利用率:keepalive参数可以减少网络中的TCP握手和挥手消息的数量,从而优化网络带宽的利用率。这可以减少网络拥塞的可能性,从而减少SYN_RECV状态的问题。
  • 提高请求处理效率:通过保持与后端服务器的连接处于活动状态,keepalive参数可以提高请求处理的效率。这是因为Nginx可以在同一连接上处理多个请求,而不需要在每个请求之后重新建立连接。

之后情况大大改善,基本没有再出现过504 Gateway Time-out。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
引用\[1\]中提到,要解决Nginx偶发504错误,可以通过优化程序来缩短执行时间。如果是文件解析等耗时较长的任务,可以调大Nginx的超时限制参数,使程序可以正常执行。可以修改Nginx的配置文件,增加fastcgi_connect_timeout、fastcgi_send_timeout和fastcgi_read_timeout等参数来调整超时时间。另外,还可以通过修改代理连接超时、代理发送超时和代理接收超时等参数来解决问题。\[1\] 引用\[2\]中提到,有时候Nginx返回504错误是因为查询接口本身就很慢,而此时数据库插入了大批量数据,导致查询更加缓慢。在这种情况下,接口直接返回了Nginx的404错误。解决这个问题可以通过排查Nginx的配置文件,确保配置没有问题。\[2\] 引用\[3\]中给出了一个Nginx的配置示例,其中包括了一些关于超时时间的设置。可以根据实际情况调整这些超时时间参数,以解决偶发504错误。\[3\] 综上所述,要解决Nginx偶发504错误,可以通过优化程序、调整超时时间参数以及检查Nginx的配置文件来解决问题。 #### 引用[.reference_title] - *1* [Nginx 出现504 Gateway Time-out的解决方法](https://blog.csdn.net/qq_41978323/article/details/130557557)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Nginx404](https://blog.csdn.net/Z_Plin/article/details/128558522)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [记录一次nginx配置修改,修复偶发502 504错误的问题](https://blog.csdn.net/aaronmer/article/details/106258842)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值