欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決java web應(yīng)用線上系統(tǒng)偶發(fā)宕機(jī)的情況

 更新時間:2020年09月17日 09:41:39   作者:qq_41343272  
這篇文章主要介紹了解決java web應(yīng)用線上系統(tǒng)偶發(fā)宕機(jī)的情況,具有好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

前言:

事情是醬紫的,系統(tǒng)上線兩個月后,風(fēng)平浪靜。在一個秋天寧靜的下午,老衲正喝著茶聽著歌敲著代碼,順便欣賞下妹紙,獨(dú)享這難得的愜意。突然手機(jī)響了,一看來電,心中一沉,項目經(jīng)理來電,必有蹊蹺。匆忙接起電話,沒有問候,直奔主題,“趕緊看下系統(tǒng),個別客戶反饋系統(tǒng)不能用了,先恢復(fù)系統(tǒng),再排查問題”。

老衲撂下電話,一哆嗦,趕緊連上VPN,直奔服務(wù)器主機(jī)。

PS:三臺服務(wù)器(centos、128G內(nèi)存、32核CPU),tomcat1.7,jdk1.8,通過F5負(fù)載

解決步驟:

1、top命令查看CPU占用情況

可以看到11042進(jìn)程占用了非常多的CPU資源

2、查看F5并發(fā)曲線:為什么應(yīng)用耗費(fèi)了這么多的線程,難道是用戶量突然上來了,調(diào)取了F5的訪問曲線圖,可以看到在15:57左右并發(fā)量突然猛漲,當(dāng)時根據(jù)曲線懷疑是請求量徒增導(dǎo)致

3、查看系統(tǒng)請求量:根據(jù)應(yīng)用系統(tǒng)日志、以及l(fā)ocalhost_access_log日志 查看此節(jié)點(diǎn)用戶訪問日志,發(fā)現(xiàn)使用人數(shù)并未徒增,根據(jù)請求量繪制的曲線如下:

可以看到曲線并未出現(xiàn)請求量徒增。

4、查看進(jìn)程內(nèi)線程運(yùn)行情況:沒有大量請求,為什么CPU會被使用這么多,難道是有線程的死鎖,

執(zhí)行top -p 11042 -H 查看進(jìn)程內(nèi)所有線程的運(yùn)行情況:

可以看到有很多線程正在執(zhí)行

5、接著打內(nèi)存快照執(zhí)行命令打內(nèi)存快照 在 jdk1.8.0_131/bin下面執(zhí)行 ./jstack -l 11042>log01.txt,然后又隔了一分鐘再次執(zhí)行./jstack -l 11042>log02.txt,生產(chǎn)兩個文件好對比里面的線程交集

打開日志,并未發(fā)現(xiàn)死鎖的線程,但是在兩個文件里面卻發(fā)現(xiàn)大量的GC線程在執(zhí)行如圖:

6、分析GC回收情況,在jdk bin目錄下執(zhí)行 ./jstat -gcutil 11042 1000 100

看到了沒有,虛擬機(jī)正在瘋狂的進(jìn)行full GC 回收,垃圾回收線程占用了非常多的CPU資源,問題已經(jīng)有了明確的方向了,接下來需要分析到底是什么導(dǎo)致了full GC的頻繁觸發(fā)。

7、分析堆內(nèi)存:

打印堆內(nèi)存 在jdk bin目錄下執(zhí)行 ./jmap -dump:live,format=b,file=problem.bin 11042 ,將日志文件下載到本地使用jprofiler分析,

發(fā)現(xiàn)有大量char[],String ,map 占用,那么是什么業(yè)務(wù)代碼造成了以上大量的數(shù)據(jù)呢,打開 char[],String 沒有找到與之關(guān)聯(lián)的業(yè)務(wù)代碼, 在map中發(fā)現(xiàn)大量的相同的業(yè)務(wù)對象,但是卻無法直接發(fā)現(xiàn)出是什么操作造成了大量業(yè)務(wù)對象的存在,因?yàn)榇藰I(yè)務(wù)對象代碼中大量使用一一排除的話工作量極大。

一時陷入困境,靈機(jī)一動,是不是還有別的內(nèi)存快照分析工具,一查有個mat,在eclipse裝好插件,打開內(nèi)存快照:

點(diǎn)擊leak suspects,如圖

在個給出問題中一一查看,這時問題出現(xiàn)了如圖:

BaseDatagridRest 的export導(dǎo)出數(shù)據(jù)方法,突然想到系統(tǒng)中有某個表數(shù)據(jù)的導(dǎo)出,立即登錄系統(tǒng)查看此項導(dǎo)出功能,發(fā)現(xiàn)這個導(dǎo)出未對數(shù)據(jù)量做限制,而且BaseDatagridRest 的export方法實(shí)現(xiàn)是將數(shù)據(jù)庫中的表數(shù)據(jù)抽取到內(nèi)存中然后回寫到excle中,讓用戶下載。

我登錄測試環(huán)境,用大數(shù)據(jù)量測試了下導(dǎo)出果然出現(xiàn)了同樣的問題,至此問題水落石出,解決方案很簡單,導(dǎo)出數(shù)據(jù)量加上限制,為了防止因?yàn)閷?dǎo)出過慢時用戶多次點(diǎn)擊加上和遮罩。

總結(jié):GC不只是用來面試的,更是來解決問題的。

以上這篇解決java web應(yīng)用線上系統(tǒng)偶發(fā)宕機(jī)的情況就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JAVA Future類的使用詳解

    JAVA Future類的使用詳解

    這篇文章主要介紹了JAVA Future類的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-04-04
  • Javaweb使用thymeleaf局部刷新結(jié)合Layui插件實(shí)現(xiàn)Html分頁

    Javaweb使用thymeleaf局部刷新結(jié)合Layui插件實(shí)現(xiàn)Html分頁

    本文主要介紹了Javaweb使用thymeleaf局部刷新結(jié)合Layui插件實(shí)現(xiàn)Html分頁,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 分布式鎖redisson實(shí)現(xiàn)原理源碼詳解

    分布式鎖redisson實(shí)現(xiàn)原理源碼詳解

    這篇文章主要介紹了源碼詳解分布式鎖redisson實(shí)現(xiàn)原理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Java中volatile關(guān)鍵字的線程的可見性、有序性詳解

    Java中volatile關(guān)鍵字的線程的可見性、有序性詳解

    這篇文章主要介紹了Java中volatile關(guān)鍵字的線程的可見性、有序性詳解,在juc多線程并發(fā)編程中,常常需要關(guān)注線程的"可見性"與"有序性",本文將詳細(xì)介紹這兩部分內(nèi)容,以及volatile關(guān)鍵字的使用,需要的朋友可以參考下
    2024-01-01
  • java數(shù)組復(fù)制的四種方法效率對比

    java數(shù)組復(fù)制的四種方法效率對比

    這篇文章主要介紹了java數(shù)組復(fù)制的四種方法效率對比,文中有簡單的代碼示例,以及效率的比較結(jié)果,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • java 字符串轉(zhuǎn)化為字符數(shù)組的3種實(shí)現(xiàn)案例

    java 字符串轉(zhuǎn)化為字符數(shù)組的3種實(shí)現(xiàn)案例

    這篇文章主要介紹了java 字符串轉(zhuǎn)化為字符數(shù)組的3種實(shí)現(xiàn)案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 關(guān)于LinkedList集合對元素進(jìn)行增查刪操作

    關(guān)于LinkedList集合對元素進(jìn)行增查刪操作

    LinkedList集合內(nèi)部包含有兩個Node類型的first和last屬性維護(hù)一個雙向循環(huán)鏈表,在鏈表中的每一個元素都使用引用的方式來記住它的前一個元素和后一個元素,從而可以將所有的元素彼此連接起來,需要的朋友可以參考下
    2023-04-04
  • 詳解springmvc常用5種注解

    詳解springmvc常用5種注解

    在本篇里我們給大家總結(jié)了關(guān)于springmvc常用5種注解相關(guān)知識點(diǎn)以及實(shí)例代碼,需要的朋友們參考下。
    2019-07-07
  • 基于Java的Scoket編程

    基于Java的Scoket編程

    本文詳細(xì)講解了基于Java的Scoket編程,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • java中變量和常量詳解

    java中變量和常量詳解

    這篇文章主要介紹了Java中變量和常量詳解,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11

最新評論