色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Java微服務隨機掉線排查過程

jf_ro2CN3Fa ? 來源:芋道源碼 ? 2023-03-07 09:30 ? 次閱讀

背景

我們的業務共使用 11 臺(阿里云)服務器,使用 SpringcloudAlibaba 構建微服務集群, 共計 60 個微服務, 全部注冊在同一個 Nacos 集群。

流量轉發路徑:nginx -> spring-gateway -> 業務微服務。

使用的版本如下:

spring-boot.version:2.2.5.RELEASE

spring-cloud.version:Hoxton.SR3

spring-cloud-alibaba.version:2.2.1.RELEASE

java.version:1.8

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

案發

春節放假期間收到反饋,網頁報錯服務未找到(gateway 找不到服務的報錯提示)。查看 nacos 集群列表,發現個別服務丟失 (下線)。

這個問題每幾天出現一次, 出現時間不固定, 每次掉線的服務像是隨機選的幾個。服務手動 kill+restart 后能穩定運行 2-3 天。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/

排查和解決

懷疑對象一:服務器內存爆了

進阿里云控制臺查看故障機器近期的各項指標,但是發現故障機器的指標有重要的幾項丟失。內存使用率、CPU 使用率、系統負載均不顯示。

1509ec3e-bc7e-11ed-bfe3-dac502259ad0.jpg

控制臺看不了只好進服務器內查看各指標,free -m 查看內存無異常。提交阿里工單。授權阿里工程師幫忙修復控制臺顯示問題,懷疑這個問題對業務有影響。

151b7224-bc7e-11ed-bfe3-dac502259ad0.jpg

控制臺修復后掉線問題依然存在。

懷疑對象二:CPU滿載

能感覺到執行命令很流暢,所以感覺不是這個原因。top 查看后很正常。

懷疑對象三:磁盤滿了

雖然概率很小,但是 du -sh * 看一下,發現磁盤容量還能用到公司倒閉。

懷疑對象四:網絡有問題

服務器那三個基本故障暫時排除后,最大懷疑對象就是網絡。畢竟服務掉線肯定是服務端一段時間內接收不到客戶端心跳包,所以把客戶端踢下線了。

通過 telnet,mtr -n ...,netstat -nat |grep "TIME_WAIT" | wc -l 這些命令也只能看個大概。

echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse 修改內核參數,開啟 TIME_WAIT socket 復用能力,提升實例的網絡發送請求性能。

查看 nacos 客戶端(微服務)的日志,在前面案發里提到沒有日志記錄。

懷疑對象五:Nacos 集群服務端故障

查看 nacos 集群部署的那幾臺服務器, 查看服務器基礎指標 (內存、CPU、磁盤等),未發現異常 (畢竟還有幾十個微服務都很正常工作)。

查看 nacos 服務端日志,發現確實有主動下線服務操作。那就奇怪了,這個機器上的有些服務還在正常工作,為什么會隨機下線幾個服務呢?

懷疑對象六:微服務占用資源太多

后來仔細想想,這個懷疑對象是不是有點離譜了?因為部署腳本都是同一個,而且負載均衡也是一樣的。但其他機器的這個服務都好好的。

調大每個微服務的內存占用。

添加堆棧打印。

15377b2c-bc7e-11ed-bfe3-dac502259ad0.jpg

等待一段時間后,異常依然存在,并且沒有堆棧打印?因為進程好好的并沒退出。

google 搜索 nacos 服務掉線,找到一篇看起來極其靠譜的文章。

154d718e-bc7e-11ed-bfe3-dac502259ad0.jpg

上文提到我使用的 springcloud 版本,恰好這個版本的 nacos-client 版本就是 1.4.1, 于是立馬測試升級。

156a6532-bc7e-11ed-bfe3-dac502259ad0.jpg

觀察幾天后,發現問題依舊,只能將探查方向繼續轉回微服務本身。

用 arthas 進行勘測各項指標,發現所有正常的服務各指標均正常。

想到服務掉線大概率是因為心跳包丟失,懷疑是心跳線程因為某些原因被殺死了。

翻看 nacos-client 源碼,找到心跳函數(nacos2.x 不是這個),使用 arthas 監聽心跳包,嘗試能找到心跳丟失的證據,貼上當時的記錄。

158a3e98-bc7e-11ed-bfe3-dac502259ad0.jpg

159e847a-bc7e-11ed-bfe3-dac502259ad0.jpg

15b3e842-bc7e-11ed-bfe3-dac502259ad0.jpg

當異常再次發生,arthas 監聽卡死,無任何記錄和響應。

無奈更換思路,寫一個監聽服務掉線的程序,期望可以在工作時間內及時獲取到異常。

15c914e2-bc7e-11ed-bfe3-dac502259ad0.jpg

終于在工作時間捕獲到異常,第一時間進入服務器內查看情況。

15ddcf18-bc7e-11ed-bfe3-dac502259ad0.jpg

確認服務器基礎項沒問題后,使用 arthas 查看服務進程堆棧情況,但是 arthas 無法進入進程。

15f40936-bc7e-11ed-bfe3-dac502259ad0.jpg

用 jstat 查看 GC 情況,顯示很正常。

160c1a26-bc7e-11ed-bfe3-dac502259ad0.jpg

用 jmap/jstack 輸出堆棧 jstack -l 25944 >heap.txt,但是提示無法進入進程。無奈使用添加 - F(這個參數的堆棧少了很多信息),jstack -F -l 25944 >heap.txt

查看堆棧文件上萬行記錄,眼都看花了但是沒有死鎖也沒有發現異常。

此時發現監聽程序提示服務上線了?檢查后發現確實掉線的幾個微服務自動恢復了,心想這就難排查了。

嘗試復現 Bug,此時離第一次案發已經過去一周多,必須盡快處理好這個 Bug 否則可能得被迫離職了。

當第二次發生異常的時候,使用同樣的方式 arthas 無法進入 ->...->jstack 輸出堆棧。奇跡發生了,服務又恢復正常了。

思考 / 猜測:因為 JVM 死了(假死),所以導致進程中的一切內容,包括心跳線程、日志等都 hold 住。

Google 搜索關鍵詞 JVM 停止(假死)排查,終于找到一個極其靠譜的回答。

16223568-bc7e-11ed-bfe3-dac502259ad0.jpg

連忙查看對比使用的幾個機器內核版本號 uname -r。

1645a46c-bc7e-11ed-bfe3-dac502259ad0.png

1656a7c6-bc7e-11ed-bfe3-dac502259ad0.jpg

那個低版本的就是故障機器,確認相關信息后,聯系阿里云提交工單。

16707e9e-bc7e-11ed-bfe3-dac502259ad0.jpg

升級完內核并重啟機器后,觀察兩天至今這個問題不存在了。誰能想到這個問題居然是因為 Linux 內核的 Bug 引起的?!不得不佩服第一個發現這個 Bug 的大佬。

168a9c0c-bc7e-11ed-bfe3-dac502259ad0.jpg

完結感言

這個問題折磨了一周多,每日如鯁在喉!調試過程也是苦樂參半,樂的是突然有了調試思路,苦的是思路是一條死胡同,還好最終結果是滿意的。

作為一名程序員,還是要時刻保持一顆探索的心,學海無涯!

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9288

    瀏覽量

    85847
  • JAVA
    +關注

    關注

    19

    文章

    2973

    瀏覽量

    104949
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14368
  • 微服務
    +關注

    關注

    0

    文章

    141

    瀏覽量

    7382

原文標題:Java 微服務隨機掉線排查過程

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    波特率漂移導致通信異常的故障排查過程

    示波器的協議解碼功能大家都不生疏,你是否有過波形看起來正常,協議參數、解碼設置都正確,卻無法正常解碼的經歷呢?本文以UART協議為例,分享由于波特率漂移導致通信異常的故障排查過程
    的頭像 發表于 01-08 13:51 ?6459次閱讀
    波特率漂移導致通信異常的故障<b class='flag-5'>排查過程</b>

    網絡通訊中隨機數不隨機引發的問題及解決方法

    最近在排查一個項目的性能壓測問題,十分偶然地發現一個莫名偶現的網絡掉線問題,最后排查發現居然跟系統的隨機數特性有莫大的關系。
    的頭像 發表于 03-10 11:51 ?4543次閱讀
    網絡通訊中<b class='flag-5'>隨機</b>數不<b class='flag-5'>隨機</b>引發的問題及解決方法

    微服務架構和CQRS架構基本概念介紹

    微服務架構現在很熱,到處可以看到各大互聯網公司的微服務實踐的分享總結。但是,我今天的分享和微服務沒有關系,希望可以帶給大家一些新的東西。如果一定要說微服務和CQRS架構的關系,那我覺得
    發表于 05-22 09:03

    微服務網關gateway的相關資料推薦

    目錄微服務網關 gateway 概述[路由器網關 Zuul 概述]嵌入式 Zuul 反向代理微服務網關 gateway 概述1、想象一下一個購物應用程序的產品詳情頁面展示了指定商品的信息:2、若是
    發表于 12-23 08:19

    java微服務生態系統模型解讀

    微服務并不是孤立存在的,它們存在于一個環境里,微服務在這個環境里進行交互。把這種環境看成微服務生態系統并分層,有助于理解微服務架構。 在一個設計良好的
    發表于 09-27 13:06 ?0次下載
    <b class='flag-5'>java</b><b class='flag-5'>微服務</b>生態系統模型解讀

    實例分析Java微服務框架和優勢

    本文首先簡單介紹了微服務的概念以及使用微服務所能帶來的優勢,然后結合實例介紹了幾個常見的Java微服務框架。 微服務在開發領域的應用越來越廣
    發表于 09-28 17:33 ?0次下載

    java微服務架構有哪些

    本文首先簡單介紹了微服務的概念以及使用微服務所能帶來的優勢,然后結合實例介紹了幾個常見的Java微服務框架。微服務在開發領域的應用越來越廣泛
    的頭像 發表于 02-09 10:34 ?8697次閱讀
    <b class='flag-5'>java</b><b class='flag-5'>微服務</b>架構有哪些

    什么是微服務和容器?微服務和容器的作用是什么

    微服務是將應用程序拆分為多個服務的一種架構類型,這些服務具備構成整個應用程序的細粒度功能。每個微服務將具備針對您的應用程序的不同邏輯功能。與應用程序的所有組件和功能都在單個實例中的單體
    的頭像 發表于 01-13 10:54 ?3.2w次閱讀
    什么是<b class='flag-5'>微服務</b>和容器?<b class='flag-5'>微服務</b>和容器的作用是什么

    DC-DC電源故障排查過程和總結,珍貴的經驗!資料下載

    電子發燒友網為你提供DC-DC電源故障排查過程和總結,珍貴的經驗!資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發表于 04-25 08:54 ?75次下載
    DC-DC電源故障<b class='flag-5'>排查過程</b>和總結,珍貴的經驗!資料下載

    JVM CPU使用率飆高問題的排查分析過程

    %,為什么會出現這樣的現象呢? 排查過程 Step 1: 使用top命令,查詢資源占用情況: 如上圖所示,顯示了服務器當前的資源占用情況,其中PID為5456的進程占用的資源最多。 在這里,我們也使用top
    的頭像 發表于 10-10 16:31 ?2365次閱讀

    glibc導致的堆外內存泄露的排查過程

    本文記錄一次glibc導致的堆外內存泄露的排查過程
    的頭像 發表于 09-01 09:43 ?749次閱讀
    glibc導致的堆外內存泄露的<b class='flag-5'>排查過程</b>

    springcloud微服務架構

    Spring Cloud是一個開源的微服務架構框架,它提供了一系列工具和組件,用于構建和管理分布式系統中的微服務。它基于Spring框架,旨在通過簡化開發過程和降低系統復雜性來幫助開發人員構建彈性
    的頭像 發表于 11-23 09:24 ?1431次閱讀

    java內存溢出排查方法

    Java內存溢出(Memory overflow)是指Java虛擬機(JVM)中的堆內存無法滿足對象分配的需求,導致程序拋出OutOfMemoryError異常。內存溢出是Java開發過程
    的頭像 發表于 11-23 14:46 ?3307次閱讀

    Java怎么排查oom異常

    據量的應用中。要排查OOM異常,需要經過以下幾個步驟: 理解OOM異常的原因:OOM異常通常有以下幾個原因:內存泄露、內存溢出、內存不足以容納所需的數據等。理解OOM異常的原因對排查問題非常重要。 配置Java堆內存:要解決OO
    的頭像 發表于 12-05 13:47 ?1278次閱讀

    Java微服務隨機掉線排查過程簡析

    我們的業務共使用 11 臺(阿里云)服務器,使用 SpringcloudAlibaba 構建微服務集群, 共計 60 個微服務, 全部注冊在同一個 Nacos 集群。
    的頭像 發表于 01-13 17:41 ?973次閱讀
    <b class='flag-5'>Java</b><b class='flag-5'>微服務</b><b class='flag-5'>隨機</b><b class='flag-5'>掉線</b><b class='flag-5'>排查過程</b>簡析
    主站蜘蛛池模板: 美女的避毛| 亚洲精品乱码电影在线观看 | 天堂在线亚洲精品专区| 偷拍自偷拍亚洲精品| 先锋影音av最新资源| 亚洲乱码在线卡一卡二卡新区| 亚洲中文字幕乱倫在线| 真人做受120分钟免费看 | 欧美成人猛片aaaaaaa| 日本午夜精品一区二区三区电影| 色青青草原桃花久久综合| 婷婷午夜影院| 亚洲中字幕永久在线观看| 在线亚洲精品国产一区麻豆 | 色呦呦人人视频| 亚洲不卡视频在线| 最近日本MV字幕免费观看视频| 99久久做夜夜爱天天做精品| 动漫在线观看免费肉肉| 国产亚洲精品久久久999密臂| 久久re6热在线视频| 女人张开腿让男人添| 少男同志freedeos| 亚洲无AV在线中文字幕| 91传媒蜜桃香蕉在线观看| 大乳牛奶女magnet| 国产视频成人| 麻豆高潮AV久久久久久久| 秋霞伦理机在线看片| 亚洲AV无码专区国产精品麻豆| 影888午夜理论不卡| 扒开女人下面使劲桶动态图| 国产日韩精品一区二区在线观看| 久久久久国产精品嫩草影院| 青青草原伊人网| 亚洲乱妇88网| Chinesetube国产中文| 国产人妻精品无码AV在线五十路 | 511麻豆视传媒精品AV| 成人在线视频免费| 精品国产午夜福利在线观看蜜月|