記錄接口請求偶發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。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11957.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11957.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11957.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Neo4jJDK開箱即用的安裝全流程】

neo4j:命令行本地訪問loclhost neo4j:命令行本地訪問loclhost2 neo4j操作 Neo4j桌面版數據庫導出導入 Neo4j安裝與配置以及JDK安裝與配置教程(超詳細) Neo4j 安裝、使用教程 Neo4j安裝教程 Neo4J桌面版的配置和連接Pycharm jdk-neo對應版本 JDK ORACLE中…

數據結構(四)————二叉樹和堆(中)

制作不易,三連支持一下唄!!! 文章目錄 前言一、堆的概念及結構二、堆的實現三.堆的應用 總結 前言 CSDN 這篇博客介紹了二叉樹中的基本概念和存儲結構,接下來我們將運用這些結構來實現二叉樹 一、堆的概念及結構 1…

招聘公司要求跳槽時間間隔不能太短,我的簡歷不符合要求,怎么辦?

很多招聘公司要求就很奇葩,什么三五原則,什么二一原則,意思就是,你幾年內,不能在超過幾家公司內任職。你就說多奇葩啊,他們都不能保證自己的員工在自己公司干多久,甚至裁掉剛干了半年的員工,也是他們干出來的事,然后他們還好意思有這種奇葩要求。 目錄 1 虛假的雙向選…

OpenPCDet算法的網絡結構及工作原理

OpenPCDet是一個用于三維點云目標檢測的開源算法庫。它提供了完整的目標檢測流程,包括數據預處理、網絡模型、損失函數、后處理等。OpenPCDet基于PyTorch框架實現,并針對點云數據進行了深度優化,以實現高效的目標檢測和定位。 OpenPCDet的目…

SpringMVC 注解詳解

SpringMVC 注解詳解 1. 引言 SpringMVC 是 Spring 框架中的 Web 層解決方案,它通過注解的方式來簡化 MVC 模式的實現。本篇將詳細介紹 SpringMVC 中常用的注解及其用法。 2. SpringMVC 注解分類 SpringMVC 的注解主要分為以下幾類: 2.1 核心注解 C…

用sunoAI寫粵語歌的方法,博主已經親自實踐可行

粵語歌還是很好聽的,那么如何使用suno進行粵語歌的創作呢? 本文和大家進行分享下如何進行粵語歌曲的創作。 訪問地址如下(電腦端/手機端一個地址): ?https://suno3.cn/#/?i8NCBS8_WXTT 在微信瀏覽器中也可以直接…

css 案例 橫向滾動漸變

效果 完整代碼&#xff1a; <template><view class"content"><view class"tab"><view class"tab-item" v-for"(item,index) in tab" :key"index" click"handlerTab(index)":class"ind…

winserver系統設置圖片查看器

新建 .bat 批處理執行文件&#xff0c;內容如下&#xff1a; echo off&cd&color 0a&cls echo Set Win10 Photo Viewer reg add "HKLM\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations" /v ".jpg" /t REG_SZ /d Photo…

MySQL——利用變量進行查詢操作

新建鏈接&#xff0c;自帶world數據庫&#xff0c;里面自帶city表格。 DQL # MySQL利用變量進行查詢操作 set cityNameHaarlemmermeer; select * from city where NamecityName;# 多個結果查詢 set cityName1Haarlemmermeer; set cityName2Breda; set cityName3Willemstad; s…

Mysql--期末復習

目錄 一.變量 1.系統變量 global session 2.用戶自定義變量 3.局部變量 二.觸發器 1.pysx函數(銷售)拼音縮寫觸發器 2.goods維護(存儲過程) 3.xkglxt 4.訂單延期 一.變量 1.系統變量 global session 2.用戶自定義變量 1.不用提前聲明&#xff0c;使用時直接 變量…

古月居講師/簽約作者招募計劃

機器人&#xff0c;作為一個集成了多學科技術的復雜系統&#xff0c;其開發過程充滿了挑戰。為了幫助開發者們更好地克服這些挑戰&#xff0c;提升項目的開發效率和質量&#xff0c;古月居特別招募[博客簽約作者/課程講師]。如果您平常熱愛記錄、分享開發者經驗的習慣&#xff…

Emby for Mac(輕松管理多媒體影音庫)1.9.9中文版

Emby for Mac是一款強大的多媒體影音庫管理工具&#xff0c;可以幫助用戶輕松管理和瀏覽自己的影音資源。它可以將用戶的個人視頻、音樂和照片組合在一起&#xff0c;并將其流式傳輸到用戶的設備上。 Emby for Mac 1.9.9中文版下載 Emby for Mac具有易于使用的界面&#xff0c;…

分布式與一致性協議之PBFT算法

在分布式系統中&#xff0c;數據的一致性是一個至關重要的問題。為了保證分布式系統中節點之間的數據一致性&#xff0c;人們提出了許多一致性協議和算法。 其中&#xff0c;PBFT&#xff08;Practical Byzantine Fault Tolerance&#xff0c;實用拜占庭容錯&#xff09;算法是…

content-type之multipart/form-data和application/json比較

multipart/form-data 知識點: 用途: 主要用于文件上傳以及包含非ASCII字符或二進制數據的表單數據提交。它將表單數據分割成多個部分&#xff0c;每個部分前都有一個boundary字符串作為分隔&#xff0c;可以包含文本字段和文件字段。結構: 包含了Content-Disposition頭部&…

機器學習案例:加州房產價格(四)

參考鏈接&#xff1a;https://hands1ml.apachecn.org/2/#_12 數據探索和可視化、發現規律 通過之前的工作&#xff0c;你只是快速查看了數據&#xff0c;對要處理的數據有了整體了解&#xff0c;現在的目標是更深的探索數據。 首先&#xff0c;保證你將測試集放在了一旁&…

【Docker系列】Linux部署Docker Compose

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

RestTemplate接口請求發送json、form數據格式以及處理接口錯誤狀態碼400 null

在使用RestTemplate發送HTTP請求時&#xff0c;你可以通過不同的方式發送JSON或表單數據&#xff08;application/x-www-form-urlencoded&#xff09;。同時&#xff0c;處理接口錯誤狀態碼&#xff08;如400&#xff09;和返回null的情況也是很重要的。以下是一些示例代碼&…

山東濟南中國當代文化名人顏廷利:大自然賦予人類眾生的真正貴重禮物

大自然賦予了眾生---火&#xff08;太陽&#xff0c;萬物生長靠太陽&#xff09;、水&#xff08;河流&#xff0c;水是生命之源&#xff09;、木&#xff08;空氣&#xff0c;生命就在一翕一合的呼吸之間&#xff09;、土&#xff08;大地&#xff0c;坤為大地之母&#xff0c…

【Python】Python中類的__iter__()方法

在Python中&#xff0c;__iter__ 方法是一個特殊的方法&#xff0c;它用于定義一個對象的迭代器行為。這個方法是面向對象編程中實現可迭代對象&#xff08;即支持迭代的對象&#xff09;的一部分。當你創建一個類&#xff0c;并且希望其實例能夠在例如 for 循環中被迭代時&…

Hive-拉鏈表的設計與實現

Hive-拉鏈表的設計與實現 在Hive中&#xff0c;拉鏈表專門用于解決在數據倉庫中數據發生變化如何實現數據存儲的問題。 1.數據同步問題 Hive在實際工作中主要用于構建離線數據倉庫&#xff0c;定期的從各種數據源中同步采集數據到Hive中&#xff0c;經過分層轉換提供數據應用…