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

news2025/1/22 12:49:03

项目场景:

我们将服务部署到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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1673713.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【操作系统期末速成】​操作系统概述(定义|功能|特征)|发展阶段和分类|结构设计|概念补充

🎥 个人主页:深鱼~🔥收录专栏:操作系统🌄欢迎 👍点赞✍评论⭐收藏 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到…

springboot306基于Java的民宿管理系统(源码+包运行+配套LW+技术指导)

项目描述 临近学期结束,开始毕业设计制作,你还在做java程序网络编程,期末作业,老师的作业要求觉的困难吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于Java的民宿管理…

红黑树!!

文章目录 1.红黑树的概念2.红黑树的几种情况2.1 情况一:cur为红,p为红,g为黑,u存在且为红(p为parent,g为grandfather,u为uncle)2.2 情况二:cur为红,p为红,g为黑&#xff…

论:即时战略RTS游戏的小地图采用 自下而上的汇报式 还是 自上而下的查找式?

关键词:RTS 小地图 游戏设计 思路 卫星 位置映射 阵营 更新 汇报 询问 UE4 UE5 Unreal Engine 前言 你是否想过类似红色警戒的战略小地图的要素是采用何种方式更新数据的。大量数据实时更新,考虑频率,运行效率,开发中如何选型&a…

EXECL小技巧

一、批量给某列添加单引号或者双引号 如下:D2列为需要添加引号的列,效果如下图 1.双引号 """"&D2&"""" 2.双引号后增加逗号 """"&D2&""""&&quo…

Android 高德地图 添加 天地图 卫星瓦片图片(解决高德地图部分地区放大后无卫星图片问题)

废话不多说,直接商代吗 高德地图的加载就不多说了,这个直接去高德官网看就行了 高德官网:概述-Android 地图SDK | 高德地图API 下面我们就说如何添加天地图瓦片图层 天地图官网:天地图API 1.先去天地图注册成为开发者 2.创建…

【C++】深度解析:用 C++ 模拟实现 String 类,探索其底层实现细节

目录 了解string类 string的内存管理 VS下string的结构 ​g下string的结构 string的模拟实现 string的构造函数 浅拷贝 深拷贝 string的遍历 重载 [] 下标访问 迭代器访问 reserve resize 增删查改 push_back() append和 insert和erase find substr swap 流插入…

java sql中 大于 小于 大于等于 小于等于 代替符号

在写java时sql会经常会忘记大于小于号的表示方法导致无法运行&#xff0c;总结一下 第一种方法&#xff1a; < &#xff1a;< < &#xff1a; < &#xff1a;> &#xff1a; > sql如下&#xff1a; create_at > #{startTime} and create_at < #{end…

【Docker学习】重启容器的docker restart

命令&#xff1a; docker container restart 描述&#xff1a; 重启一个或多个容器 用法&#xff1a; docker container restart [OPTIONS] CONTAINER [CONTAINER...] 别名&#xff1a; docker restart(docker的一些命令可以简写&#xff0c;docker restart就等同于docker cont…

(接上一篇linux rocky 搭建DNS高阶版)实现不同网段访问解析不同的服务器并加域

上一篇链接&#xff1a;linux rocky 搭建DNS服务和禁止AD域控DNS&#xff0c;做到独立DNS并加域-CSDN博客文章浏览阅读417次&#xff0c;点赞13次&#xff0c;收藏7次。使用linux rocky 搭建DNS服务&#xff0c;用于独立AD域控DNS存在&#xff0c;并且实现加域。https://blog.c…

解决Jmeter报错 :Error generating the report: java.lang.NullPointerException

当我们在使用命令行的方式来执行jmeter 脚本的时候&#xff0c;例如 ./jmeter -n -t /opt/jmeter/script/test.jmx -Juser50 -Jtime100 -l /opt/jmeter/script/restult2.jtl 上面脚本的含义解释如下&#xff1a; -n -t 通过命令行的方式执行脚本test.jmx -Juser50 并发用户…

【排序算法】之冒泡排序

一、算法介绍 冒泡排序&#xff08;Bubble Sort&#xff09;是一种基础的排序算法&#xff0c;它的主要思想是通过重复遍历待排序的列表&#xff0c;比较每对相邻的元素并根据需要交换它们&#xff0c;使得每一遍遍历都能将未排序的最大&#xff08;或最小&#xff09;元素“冒…

httpretty,一个神奇的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个神奇的 Python 库 - HTTPretty。 Github地址&#xff1a;https://github.com/gabrielfalcao/HTTPretty 在现代软件开发中&#xff0c;API和微服务的测试是确保应用稳定性和功能正确性的关键环…

RAR:Retrieving And Ranking Augmented MLLMs for Visual Recognition

我的博客已全部迁往个人博客站点&#xff1a;oukohou.wang&#xff0c;敬请前往&#xff5e;&#xff5e; paper: RAR:Retrieving And Ranking Augmented MLLMs for Visual Recognitioncodes: https://github.com/Liuziyu77/RAR 一、闲言碎语 RAR&#xff0c;整体动机总结一下…

LeetCode2390从字符串中移除星号

题目描述 给你一个包含若干星号 * 的字符串 s 。在一步操作中&#xff0c;你可以&#xff1a;选中 s 中的一个星号。移除星号 左侧 最近的那个 非星号 字符&#xff0c;并移除该星号自身。返回移除 所有 星号之后的字符串。注意&#xff1a;生成的输入保证总是可以执行题面中描…

JAVA 项目<果园之窗>_完结

目录 1、前言&#xff1a;2、视频展示&#xff1a;3、环境配置&#xff1a;4、工程代码&#xff1a;5、原理&#xff1a;6、原理补充&#xff1a;7、综上&#xff1a; 1、前言&#xff1a; 因为没有足够的时间这个项目用的是别人搭好的框架&#xff0c;在此基础上做调整并根据前…

算法训练营第二十八天 | LeetCode 77 组合(剪枝优化)、LeetCode 216 组合总和III、LeetCode 17 电话号码的字母组合

LeetCode 77 组合&#xff08;剪枝优化&#xff09; 当我们到达某一层&#xff0c;后面的结点数已经不能满足条件时。可以进行剪枝操作。 代码如下&#xff1a; class Solution { private:vector<int> path;vector<vector<int>> res;void backtracking(in…

前端无样式id或者class等来定位标签

目录&#xff1a; 1、使用背景2、代码处理 1、使用背景 客户使用我们产品组件&#xff0c;发现替换文件&#xff0c;每次替换都会新增如下的样式&#xff0c;造就样式错乱&#xff0c;是组件的文件&#xff0c;目前临时处理的话就是替换文件时删除新增的样式&#xff0c;但是发…

机器学习中常用的几种距离——欧式、余弦等

目录 一、欧式距离&#xff08;L2距离&#xff09;二、曼哈顿距离&#xff08;L1距离&#xff09;三、汉明距离四、余弦相似度 一、欧式距离&#xff08;L2距离&#xff09; &#xff08;1&#xff09;二维空间的距离公式&#xff08;三维空间的在这个基础上类推&#xff09;&…

Spring AI项目Open AI对话接口开发指导

文章目录 创建Spring AI项目配置项目pom、application文件controller接口开发接口测试 创建Spring AI项目 打开IDEA创建一个新的spring boot项目&#xff0c;填写项目名称和位置&#xff0c;类型选择maven&#xff0c;组、工件、软件包名称可以自定义&#xff0c;JDK选择17即可…