最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言:

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

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

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

解決步驟:

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

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

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

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

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

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

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

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

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

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

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

看到了沒(méi)有,虛擬機(jī)正在瘋狂的進(jìn)行full GC 回收,垃圾回收線程占用了非常多的CPU資源,問(wèn)題已經(jīng)有了明確的方向了,接下來(lái)需要分析到底是什么導(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ù)呢,打開(kāi) char[],String 沒(méi)有找到與之關(guān)聯(lián)的業(yè)務(wù)代碼, 在map中發(fā)現(xiàn)大量的相同的業(yè)務(wù)對(duì)象,但是卻無(wú)法直接發(fā)現(xiàn)出是什么操作造成了大量業(yè)務(wù)對(duì)象的存在,因?yàn)榇藰I(yè)務(wù)對(duì)象代碼中大量使用一一排除的話工作量極大。

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

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

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

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

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

總結(jié):GC不只是用來(lái)面試的,更是來(lái)解決問(wèn)題的。

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

相關(guān)文章

  • Java之Algorithm_analysis案例詳解

    Java之Algorithm_analysis案例詳解

    這篇文章主要介紹了Java之Algorithm_analysis案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Java socket字節(jié)流傳輸示例解析

    Java socket字節(jié)流傳輸示例解析

    這篇文章主要為大家詳細(xì)介紹了Java socket字節(jié)流傳輸示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • spring 注解驗(yàn)證@NotNull等使用方法

    spring 注解驗(yàn)證@NotNull等使用方法

    這篇文章主要介紹了spring 注解驗(yàn)證@NotNull等使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 淺析Spring IOC 依賴查找你需要知道的幾種方式

    淺析Spring IOC 依賴查找你需要知道的幾種方式

    這篇文章主要介紹了淺析Spring IOC 依賴查找的幾種方式,Spring是Java面試中最??嫉模瑢W(xué)Java的小伙伴快來(lái)看看吧
    2021-08-08
  • spring cloud zuul 與 sentinel的結(jié)合使用操作

    spring cloud zuul 與 sentinel的結(jié)合使用操作

    這篇文章主要介紹了spring cloud zuul 與 sentinel 的結(jié)合使用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java 基礎(chǔ) byte[]與各種數(shù)據(jù)類型互相轉(zhuǎn)換的簡(jiǎn)單示例

    Java 基礎(chǔ) byte[]與各種數(shù)據(jù)類型互相轉(zhuǎn)換的簡(jiǎn)單示例

    這篇文章主要介紹了Java 基礎(chǔ) byte[]與各種數(shù)據(jù)類型互相轉(zhuǎn)換的簡(jiǎn)單示例的相關(guān)資料,這里對(duì)byte[]類型對(duì)long,int,double,float,short,cahr,object,string類型相互轉(zhuǎn)換的實(shí)例,需要的朋友可以參考下
    2017-01-01
  • springboot項(xiàng)目如何配置多數(shù)據(jù)源

    springboot項(xiàng)目如何配置多數(shù)據(jù)源

    本文介紹了如何在SpringBoot項(xiàng)目中配置多數(shù)據(jù)源,包括配置多個(gè)數(shù)據(jù)源、創(chuàng)建數(shù)據(jù)源配置類、配置事務(wù)管理器以及使用不同的Mapper,從而實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)操作
    2025-03-03
  • SpringSecurity中的表單認(rèn)證詳細(xì)解析

    SpringSecurity中的表單認(rèn)證詳細(xì)解析

    這篇文章主要介紹了SpringSecurity中的表單認(rèn)證詳細(xì)解析,在上一篇文章中,我們初步引入了?Spring?Security,并使用其默認(rèn)生效的?HTTP?基本認(rèn)證保護(hù)?URL?資源,在本篇文章中我們使用表單認(rèn)證來(lái)保護(hù)?URL?資源,需要的朋友可以參考下
    2023-12-12
  • 百度Java面試題 前200頁(yè)精選(上)

    百度Java面試題 前200頁(yè)精選(上)

    這篇文章主要為大家分享了Java面試資源,百度“Java面試題”前200頁(yè)都在這里了,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • java獲取用戶輸入的字符串方法

    java獲取用戶輸入的字符串方法

    今天小編就為大家分享一篇java獲取用戶輸入的字符串方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07

最新評(píng)論

华宁县| 贺兰县| 咸阳市| 邯郸市| 彝良县| 黎城县| 禄劝| 都昌县| 龙陵县| 聂拉木县| 铁力市| 高邑县| 正宁县| 黑水县| 仙居县| 抚顺县| 通辽市| 黄大仙区| 泽州县| 富顺县| 防城港市| 湖北省| 应城市| 昌图县| 开远市| 德州市| 通化市| 文山县| 磴口县| 通山县| 涞源县| 奉新县| 彭山县| 平潭县| 娄底市| 斗六市| 桦南县| 中牟县| 茶陵县| 红河县| 施甸县|