Spring Boot連接超時導致502錯誤的實戰(zhàn)案例
1.問題描述
內(nèi)部系統(tǒng)之間通過Nginx來實現(xiàn)路由轉(zhuǎn)發(fā)。
但最近發(fā)現(xiàn)有一個系統(tǒng),經(jīng)常報502錯誤,每天達到上百次,完全無法忍受。
2. 原因排查
于是進行排查, 發(fā)現(xiàn)配置人員把連接超時時間(server.tomcat.connection-timeout)的單位,理解為秒,實際上是毫秒。
SpringBoot的部分配置如下:
# Tomcat server: tomcat: uri-encoding: UTF-8 max-threads: 1000 min-spare-threads: 30 connection-timeout: 60 # 錯誤在這里 port: 18080 servlet: context-path: / max-http-header-size: 102400
原來配置的值為 60,如果建立客戶端連接的過程中,恰好碰到GC,并且加上GC的暫停時間總共達到60ms以上,Tomcat一看,超時了,就會導致建立連接失敗,然后Nginx給客戶端返回502錯誤。
3. 解決辦法
修改連接超時時間,例如修改為【server.tomcat.connection-timeout=6000】, 如下所示:
# Tomcat server: tomcat: uri-encoding: UTF-8 max-threads: 1000 min-spare-threads: 30 connection-timeout: 6000 port: 18080 servlet: context-path: / max-http-header-size: 102400
問題解決。
當然,502錯誤也不止這個原因,需要排查Nginx鏈路。
總結(jié)
到此這篇關于Spring Boot連接超時導致502錯誤實戰(zhàn)案例的文章就介紹到這了,更多相關SpringBoot連接超時導致502錯誤內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mybatis不啟動項目直接測試Mapper的實現(xiàn)方法
在項目開發(fā)中,測試單個Mybatis Mapper方法通常需要啟動整個SpringBoot項目,消耗大量時間,本文介紹通過Main方法和Mybatis配置類,快速測試Mapper功能,無需啟動整個項目,這方法使用AnnotationConfigApplicationContext容器2024-09-09一篇文章總結(jié)Java虛擬機內(nèi)存區(qū)域模型
這篇文章主要介紹了一篇文章總結(jié)Java虛擬機內(nèi)存區(qū)域模型,本篇文章主要來總結(jié)一下Java虛擬機內(nèi)存的各個區(qū)域,以及這些區(qū)域的作用、服務對象以及其中可能產(chǎn)生的問題,作為大家的面試寶典。,需要的朋友可以參考下2019-06-06SpringSecurity rememberme功能實現(xiàn)過程解析
這篇文章主要介紹了SpringSecurity rememberme功能實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03JAVA中StringBuffer與String的區(qū)別解析
這篇文章主要介紹了JAVA中StringBuffer與String的區(qū)別解析,需要的朋友可以參考下2014-02-02Java ByteBuffer網(wǎng)絡編程用法實例解析
這篇文章主要介紹了Java ByteBuffer網(wǎng)絡編程用法實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10Java GUI進階之流式布局管理器FlowLayout專項精講
FlowLayout-流式布局管理器,按水平方向依次排列放置組件,排滿一行,換下一行繼續(xù)排列。排列方向(左到右 或 右到左)取決于容器的componentOrientation屬性2022-04-04