在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java微服務(wù)隨機(jī)掉線排查過(guò)程簡(jiǎn)析

jf_ro2CN3Fa ? 來(lái)源:博客園 ? 作者:rm-rf* ? 2024-01-13 17:41 ? 次閱讀

背景

我們的業(yè)務(wù)共使用 11 臺(tái)(阿里云)服務(wù)器,使用 SpringcloudAlibaba 構(gòu)建微服務(wù)集群, 共計(jì) 60 個(gè)微服務(wù), 全部注冊(cè)在同一個(gè) Nacos 集群。

流量轉(zhuǎn)發(fā)路徑:nginx -> spring-gateway -> 業(yè)務(wù)微服務(wù)。

使用的版本如下:

spring-boot.version:2.2.5.RELEASE

spring-cloud.version:Hoxton.SR3

spring-cloud-alibaba.version:2.2.1.RELEASE

java.version:1.8

案發(fā)

春節(jié)放假期間收到反饋,網(wǎng)頁(yè)報(bào)錯(cuò)服務(wù)未找到(gateway 找不到服務(wù)的報(bào)錯(cuò)提示)。查看 nacos 集群列表,發(fā)現(xiàn)個(gè)別服務(wù)丟失 (下線)。

這個(gè)問(wèn)題每幾天出現(xiàn)一次, 出現(xiàn)時(shí)間不固定, 每次掉線的服務(wù)像是隨機(jī)選的幾個(gè)。服務(wù)手動(dòng) kill+restart 后能穩(wěn)定運(yùn)行 2-3 天。

排查和解決

懷疑對(duì)象一:服務(wù)器內(nèi)存爆了

進(jìn)阿里云控制臺(tái)查看故障機(jī)器近期的各項(xiàng)指標(biāo),但是發(fā)現(xiàn)故障機(jī)器的指標(biāo)有重要的幾項(xiàng)丟失。內(nèi)存使用率、CPU 使用率、系統(tǒng)負(fù)載均不顯示。

b1c58532-b1f7-11ee-8b88-92fbcf53809c.jpg

控制臺(tái)看不了只好進(jìn)服務(wù)器內(nèi)查看各指標(biāo),free -m 查看內(nèi)存無(wú)異常。提交阿里工單。授權(quán)阿里工程師幫忙修復(fù)控制臺(tái)顯示問(wèn)題,懷疑這個(gè)問(wèn)題對(duì)業(yè)務(wù)有影響。

b1db2e78-b1f7-11ee-8b88-92fbcf53809c.jpg

控制臺(tái)修復(fù)后掉線問(wèn)題依然存在。

懷疑對(duì)象二:CPU滿(mǎn)載

能感覺(jué)到執(zhí)行命令很流暢,所以感覺(jué)不是這個(gè)原因。top 查看后很正常。

懷疑對(duì)象三:磁盤(pán)滿(mǎn)了

雖然概率很小,但是 du -sh * 看一下,發(fā)現(xiàn)磁盤(pán)容量還能用到公司倒閉。

懷疑對(duì)象四:網(wǎng)絡(luò)有問(wèn)題

服務(wù)器那三個(gè)基本故障暫時(shí)排除后,最大懷疑對(duì)象就是網(wǎng)絡(luò)。畢竟服務(wù)掉線肯定是服務(wù)端一段時(shí)間內(nèi)接收不到客戶(hù)端心跳包,所以把客戶(hù)端踢下線了。

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

echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse 修改內(nèi)核參數(shù),開(kāi)啟 TIME_WAIT socket 復(fù)用能力,提升實(shí)例的網(wǎng)絡(luò)發(fā)送請(qǐng)求性能。

查看 nacos 客戶(hù)端(微服務(wù))的日志,在前面案發(fā)里提到?jīng)]有日志記錄。

懷疑對(duì)象五:Nacos 集群服務(wù)端故障

查看 nacos 集群部署的那幾臺(tái)服務(wù)器, 查看服務(wù)器基礎(chǔ)指標(biāo) (內(nèi)存、CPU、磁盤(pán)等),未發(fā)現(xiàn)異常 (畢竟還有幾十個(gè)微服務(wù)都很正常工作)。

查看 nacos 服務(wù)端日志,發(fā)現(xiàn)確實(shí)有主動(dòng)下線服務(wù)操作。那就奇怪了,這個(gè)機(jī)器上的有些服務(wù)還在正常工作,為什么會(huì)隨機(jī)下線幾個(gè)服務(wù)呢?

懷疑對(duì)象六:微服務(wù)占用資源太多

后來(lái)仔細(xì)想想,這個(gè)懷疑對(duì)象是不是有點(diǎn)離譜了? 因?yàn)椴渴鹉_本都是同一個(gè),而且負(fù)載均衡也是一樣的。 但其他機(jī)器的這個(gè)服務(wù)都好好的。

調(diào)大每個(gè)微服務(wù)的內(nèi)存占用。

添加堆棧打印。

b1f11db4-b1f7-11ee-8b88-92fbcf53809c.jpg

等待一段時(shí)間后,異常依然存在,并且沒(méi)有堆棧打印?因?yàn)檫M(jìn)程好好的并沒(méi)退出。

google 搜索 nacos 服務(wù)掉線,找到一篇看起來(lái)極其靠譜的文章。

b2009348-b1f7-11ee-8b88-92fbcf53809c.jpg

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

b216c17c-b1f7-11ee-8b88-92fbcf53809c.jpg

觀察幾天后,發(fā)現(xiàn)問(wèn)題依舊,只能將探查方向繼續(xù)轉(zhuǎn)回微服務(wù)本身。

用 arthas 進(jìn)行勘測(cè)各項(xiàng)指標(biāo),發(fā)現(xiàn)所有正常的服務(wù)各指標(biāo)均正常。

想到服務(wù)掉線大概率是因?yàn)樾奶鼇G失,懷疑是心跳線程因?yàn)槟承┰虮粴⑺懒恕?/p>

翻看 nacos-client 源碼,找到心跳函數(shù)(nacos2.x 不是這個(gè)),使用 arthas 監(jiān)聽(tīng)心跳包,嘗試能找到心跳丟失的證據(jù),貼上當(dāng)時(shí)的記錄。

b224ef90-b1f7-11ee-8b88-92fbcf53809c.jpgb23232fe-b1f7-11ee-8b88-92fbcf53809c.jpgb249c644-b1f7-11ee-8b88-92fbcf53809c.jpg

當(dāng)異常再次發(fā)生,arthas 監(jiān)聽(tīng)卡死,無(wú)任何記錄和響應(yīng)。

無(wú)奈更換思路,寫(xiě)一個(gè)監(jiān)聽(tīng)服務(wù)掉線的程序,期望可以在工作時(shí)間內(nèi)及時(shí)獲取到異常。

b26403b0-b1f7-11ee-8b88-92fbcf53809c.jpg

終于在工作時(shí)間捕獲到異常,第一時(shí)間進(jìn)入服務(wù)器內(nèi)查看情況。

b2742970-b1f7-11ee-8b88-92fbcf53809c.jpg

確認(rèn)服務(wù)器基礎(chǔ)項(xiàng)沒(méi)問(wèn)題后,使用 arthas 查看服務(wù)進(jìn)程堆棧情況,但是 arthas 無(wú)法進(jìn)入進(jìn)程。

b27e3000-b1f7-11ee-8b88-92fbcf53809c.jpg

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

b29965f0-b1f7-11ee-8b88-92fbcf53809c.jpg

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

查看堆棧文件上萬(wàn)行記錄,眼都看花了但是沒(méi)有死鎖也沒(méi)有發(fā)現(xiàn)異常。

此時(shí)發(fā)現(xiàn)監(jiān)聽(tīng)程序提示服務(wù)上線了?檢查后發(fā)現(xiàn)確實(shí)掉線的幾個(gè)微服務(wù)自動(dòng)恢復(fù)了,心想這就難排查了。

嘗試復(fù)現(xiàn) Bug,此時(shí)離第一次案發(fā)已經(jīng)過(guò)去一周多,必須盡快處理好這個(gè) Bug 否則可能得被迫離職了。

當(dāng)?shù)诙伟l(fā)生異常的時(shí)候,使用同樣的方式 arthas 無(wú)法進(jìn)入 ->...->jstack 輸出堆棧。奇跡發(fā)生了,服務(wù)又恢復(fù)正常了。

思考 / 猜測(cè):因?yàn)?JVM 死了(假死),所以導(dǎo)致進(jìn)程中的一切內(nèi)容,包括心跳線程、日志等都 hold 住。

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

b2a50b62-b1f7-11ee-8b88-92fbcf53809c.jpg

連忙查看對(duì)比使用的幾個(gè)機(jī)器內(nèi)核版本號(hào) uname -r。

b2bdb3ba-b1f7-11ee-8b88-92fbcf53809c.pngb2c6bb54-b1f7-11ee-8b88-92fbcf53809c.jpg

那個(gè)低版本的就是故障機(jī)器,確認(rèn)相關(guān)信息后,聯(lián)系阿里云提交工單。

b2e82dca-b1f7-11ee-8b88-92fbcf53809c.jpg

升級(jí)完內(nèi)核并重啟機(jī)器后,觀察兩天至今這個(gè)問(wèn)題不存在了。誰(shuí)能想到這個(gè)問(wèn)題居然是因?yàn)?Linux 內(nèi)核的 Bug 引起的?!不得不佩服第一個(gè)發(fā)現(xiàn)這個(gè) Bug 的大佬。

b2f7fff2-b1f7-11ee-8b88-92fbcf53809c.jpg

完結(jié)感言

這個(gè)問(wèn)題折磨了一周多,每日如鯁在喉!調(diào)試過(guò)程也是苦樂(lè)參半,樂(lè)的是突然有了調(diào)試思路,苦的是思路是一條死胡同,還好最終結(jié)果是滿(mǎn)意的。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2987

    瀏覽量

    107291
  • JVM
    JVM
    +關(guān)注

    關(guān)注

    0

    文章

    160

    瀏覽量

    12543
  • LINUX內(nèi)核
    +關(guān)注

    關(guān)注

    1

    文章

    317

    瀏覽量

    22254

原文標(biāo)題:Java 微服務(wù)隨機(jī)掉線排查過(guò)程

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    波特率漂移導(dǎo)致通信異常的故障排查過(guò)程

    示波器的協(xié)議解碼功能大家都不生疏,你是否有過(guò)波形看起來(lái)正常,協(xié)議參數(shù)、解碼設(shè)置都正確,卻無(wú)法正常解碼的經(jīng)歷呢?本文以UART協(xié)議為例,分享由于波特率漂移導(dǎo)致通信異常的故障排查過(guò)程
    的頭像 發(fā)表于 01-08 13:51 ?6709次閱讀
    波特率漂移導(dǎo)致通信異常的故障<b class='flag-5'>排查過(guò)程</b>

    微服務(wù)架構(gòu)和CQRS架構(gòu)基本概念介紹

    微服務(wù)架構(gòu)現(xiàn)在很熱,到處可以看到各大互聯(lián)網(wǎng)公司的微服務(wù)實(shí)踐的分享總結(jié)。但是,我今天的分享和微服務(wù)沒(méi)有關(guān)系,希望可以帶給大家一些新的東西。如果一定要說(shuō)微服務(wù)和CQRS架構(gòu)的關(guān)系,那我覺(jué)得
    發(fā)表于 05-22 09:03

    微服務(wù)網(wǎng)關(guān)gateway的相關(guān)資料推薦

    目錄微服務(wù)網(wǎng)關(guān) gateway 概述[路由器網(wǎng)關(guān) Zuul 概述]嵌入式 Zuul 反向代理微服務(wù)網(wǎng)關(guān) gateway 概述1、想象一下一個(gè)購(gòu)物應(yīng)用程序的產(chǎn)品詳情頁(yè)面展示了指定商品的信息:2、若是
    發(fā)表于 12-23 08:19

    鼠標(biāo)HID例程(中)簡(jiǎn)

    鼠標(biāo) HID 例程簡(jiǎn) 緊接《鼠標(biāo) HID 例程簡(jiǎn)(上)》一文,繼續(xù)向大家介紹鼠 標(biāo) HID 例程的未完的內(nèi)容。
    發(fā)表于 07-26 15:18 ?0次下載

    java微服務(wù)生態(tài)系統(tǒng)模型解讀

    微服務(wù)并不是孤立存在的,它們存在于一個(gè)環(huán)境里,微服務(wù)在這個(gè)環(huán)境里進(jìn)行交互。把這種環(huán)境看成微服務(wù)生態(tài)系統(tǒng)并分層,有助于理解微服務(wù)架構(gòu)。 在一個(gè)設(shè)計(jì)良好的
    發(fā)表于 09-27 13:06 ?0次下載
    <b class='flag-5'>java</b><b class='flag-5'>微服務(wù)</b>生態(tài)系統(tǒng)模型解讀

    實(shí)例分析Java微服務(wù)框架和優(yōu)勢(shì)

    本文首先簡(jiǎn)單介紹了微服務(wù)的概念以及使用微服務(wù)所能帶來(lái)的優(yōu)勢(shì),然后結(jié)合實(shí)例介紹了幾個(gè)常見(jiàn)的Java微服務(wù)框架。 微服務(wù)在開(kāi)發(fā)領(lǐng)域的應(yīng)用越來(lái)越廣
    發(fā)表于 09-28 17:33 ?0次下載

    java微服務(wù)架構(gòu)有哪些

    本文首先簡(jiǎn)單介紹了微服務(wù)的概念以及使用微服務(wù)所能帶來(lái)的優(yōu)勢(shì),然后結(jié)合實(shí)例介紹了幾個(gè)常見(jiàn)的Java微服務(wù)框架。微服務(wù)在開(kāi)發(fā)領(lǐng)域的應(yīng)用越來(lái)越廣泛
    的頭像 發(fā)表于 02-09 10:34 ?8917次閱讀
    <b class='flag-5'>java</b><b class='flag-5'>微服務(wù)</b>架構(gòu)有哪些

    DC-DC電源故障排查過(guò)程和總結(jié),珍貴的經(jīng)驗(yàn)!資料下載

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

    JVM CPU使用率飆高問(wèn)題的排查分析過(guò)程

    %,為什么會(huì)出現(xiàn)這樣的現(xiàn)象呢? 排查過(guò)程 Step 1: 使用top命令,查詢(xún)資源占用情況: 如上圖所示,顯示了服務(wù)器當(dāng)前的資源占用情況,其中PID為5456的進(jìn)程占用的資源最多。 在這里,我們也使用top
    的頭像 發(fā)表于 10-10 16:31 ?2691次閱讀

    微服務(wù)架構(gòu)的全局圖景簡(jiǎn)

    如果一直保持共用數(shù)據(jù)庫(kù)的模式,則整個(gè)架構(gòu)會(huì)越來(lái)越僵化,失去了微服務(wù)架構(gòu)的意義。因此小明和小紅一鼓作氣,把數(shù)據(jù)庫(kù)也拆分了。
    的頭像 發(fā)表于 10-11 11:53 ?1116次閱讀

    Java微服務(wù)隨機(jī)掉線排查過(guò)程

    控制臺(tái)看不了只好進(jìn)服務(wù)器內(nèi)查看各指標(biāo),free -m 查看內(nèi)存無(wú)異常。提交阿里工單。授權(quán)阿里工程師幫忙修復(fù)控制臺(tái)顯示問(wèn)題,懷疑這個(gè)問(wèn)題對(duì)業(yè)務(wù)有影響。
    的頭像 發(fā)表于 03-07 09:30 ?764次閱讀

    glibc導(dǎo)致的堆外內(nèi)存泄露的排查過(guò)程

    本文記錄一次glibc導(dǎo)致的堆外內(nèi)存泄露的排查過(guò)程
    的頭像 發(fā)表于 09-01 09:43 ?993次閱讀
    glibc導(dǎo)致的堆外內(nèi)存泄露的<b class='flag-5'>排查過(guò)程</b>

    java內(nèi)存溢出排查方法

    Java內(nèi)存溢出(Memory overflow)是指Java虛擬機(jī)(JVM)中的堆內(nèi)存無(wú)法滿(mǎn)足對(duì)象分配的需求,導(dǎo)致程序拋出OutOfMemoryError異常。內(nèi)存溢出是Java開(kāi)發(fā)過(guò)程
    的頭像 發(fā)表于 11-23 14:46 ?3834次閱讀

    Java怎么排查oom異常

    據(jù)量的應(yīng)用中。要排查OOM異常,需要經(jīng)過(guò)以下幾個(gè)步驟: 理解OOM異常的原因:OOM異常通常有以下幾個(gè)原因:內(nèi)存泄露、內(nèi)存溢出、內(nèi)存不足以容納所需的數(shù)據(jù)等。理解OOM異常的原因?qū)?b class='flag-5'>排查問(wèn)題非常重要。 配置Java堆內(nèi)存:要解決OO
    的頭像 發(fā)表于 12-05 13:47 ?1557次閱讀

    Java應(yīng)用OOM問(wèn)題的排查過(guò)程

    導(dǎo)讀 本文記錄最近一例Java應(yīng)用OOM問(wèn)題的排查過(guò)程,希望可以給遇到類(lèi)似問(wèn)題的同學(xué)提供參考。 前言:此文記錄最近一例Java應(yīng)用OOM問(wèn)題的排查過(guò)程,希望可以給遇到類(lèi)似問(wèn)題的同學(xué)提供
    的頭像 發(fā)表于 02-12 11:15 ?602次閱讀
    <b class='flag-5'>Java</b>應(yīng)用OOM問(wèn)題的<b class='flag-5'>排查過(guò)程</b>
    主站蜘蛛池模板: 中文字幕va一区二区三区 | 在线欧美色 | 日日操免费视频 | 我色综合 | 国产未成女年一区二区 | lsj老司机精品视频在线观看 | 偷偷操不一样的久久 | 女人张开腿让男人桶视频免费大全 | 色婷婷综合久久久中文字幕 | 久久国产高清视频 | 四虎在线视频观看 | 91网视频在线观看 | 综合网激情五月 | 91成人免费视频 | 午夜三级理论在线观看视频 | 日本天堂网在线观看 | 一本到卡二卡三卡四卡 | 国产综合色精品一区二区三区 | 国产tube| 5566成人| 美国激情ap毛片 | yy6080一级毛片高清 | 中文在线最新版天堂 | 三级视频网站在线观看 | 都市激情综合网 | 黄网站色视频大全免费观看 | 国产黄在线观看免费观看不卡 | 免费看啪啪的网站 | 天堂在线中文网 | 99久久99久久免费精品蜜桃 | 激情网址在线观看 | 欧美午夜在线观看 | 天天影视欧美综合在线观看 | 午夜h视频 | 欧美三级图片 | 亚洲伊人成人网 | 真人一级一级特黄高清毛片 | 天天干夜夜爽天天操夜夜爽视频 | 天天伊人网 | 精品精品国产高清a毛片牛牛 | 欧美性野久久久久久久久 |