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

一次因Java應(yīng)用造成CPU過(guò)高的排查實(shí)踐過(guò)程

 更新時(shí)間:2018年11月05日 15:07:10   作者:小草莓子桑  
一個(gè)應(yīng)用占用CPU很高,除了確實(shí)是計(jì)算密集型應(yīng)用之外,通常原因都是出現(xiàn)了死循環(huán)。下面這篇文章主要給大家介紹了一次因Java應(yīng)用造成CPU過(guò)高的排查實(shí)踐過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

最近遇到一個(gè)java應(yīng)用造成了服務(wù)器CPU使用率過(guò)高,最后查詢,問(wèn)題是因?yàn)樵趖omcat下重新部署應(yīng)用的時(shí)候沒(méi)有kill掉tomcat進(jìn)程,造成應(yīng)用中的數(shù)據(jù)庫(kù)連接池進(jìn)程中的鎖不能被釋放,死循環(huán)造成了cpu使用率過(guò)高的現(xiàn)象,詳細(xì)原因就不做詳細(xì)分析了,主要分享一下問(wèn)題排查的過(guò)程。

使用top命令查詢服務(wù)cpu使用情況

服務(wù)器資源使用率

可以看到31737這個(gè)進(jìn)程的CPU使用率巨大

使用top -Hp 31737查詢31737進(jìn)程中各個(gè)線程的資源使用率

top -Hp 31737

使用top -Hp 31737查詢31737進(jìn)程中各個(gè)線程的資源使用率


31737進(jìn)程中各個(gè)線程的使用率

由于當(dāng)時(shí)的截圖丟失了,簡(jiǎn)單說(shuō)一下,使用top -Hp 31737命令查詢到31737進(jìn)程中,一個(gè)線程id為5322占用CPU過(guò)高

使用printf "%x\n" 5322把線程id轉(zhuǎn)化為十六進(jìn)制

printf "%x\n" 5322

因?yàn)榇蛴【€程棧的時(shí)候,本地線程標(biāo)識(shí)nid是用十六進(jìn)制表示的,使用該命令把線程id轉(zhuǎn)化為十六進(jìn)制


5322的十六進(jìn)制為14ca

使用jstack命令打印堆棧信息

jstack 31737 | grep -10 14ca

使用jstack 31737 | grep -10 14ca打印31737的堆棧信息,并查找本地線程標(biāo)識(shí)為14ca的線程堆棧信息

31737的堆棧信息

如圖,線程的狀態(tài)為T(mén)IMED_WAITING,對(duì)象等待中,查看源碼

出現(xiàn)問(wèn)題的代碼

發(fā)現(xiàn)問(wèn)題的原因就不做詳細(xì)分析了,這里主要是分享一下問(wèn)題排查的過(guò)程

度娘一下有個(gè)大神回答的不錯(cuò),連接在這里,有興趣的可以自己去看一下https://stackoverflow.com/questions/6981564/why-must-the-jdbc-driver-be-put-in-tomcat-home-lib-folder/7198049#7198049

大神的回答

大致原因就是因?yàn)樵趖omcat下重新部署應(yīng)用的時(shí)候沒(méi)有kill掉tomcat進(jìn)程,造成應(yīng)用中的數(shù)據(jù)庫(kù)連接池進(jìn)程中的鎖不能被釋放

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 淺析java中String類型中“==”與“equal”的區(qū)別

    淺析java中String類型中“==”與“equal”的區(qū)別

    這篇文章主要介紹了淺析java中String類型中“==”與“equal”的區(qū)別,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java操作redis設(shè)置第二天凌晨過(guò)期的解決方案

    Java操作redis設(shè)置第二天凌晨過(guò)期的解決方案

    這篇文章主要介紹了Java操作redis設(shè)置第二天凌晨過(guò)期的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • spring boot如何使用spring AOP實(shí)現(xiàn)攔截器

    spring boot如何使用spring AOP實(shí)現(xiàn)攔截器

    本篇文章主要介紹了spring boot如何使用spring AOP實(shí)現(xiàn)攔截器,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • springboot-controller的使用詳解

    springboot-controller的使用詳解

    本篇文章主要介紹了springboot-controller的使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • MybatisPlus開(kāi)啟二級(jí)緩存的方法詳解

    MybatisPlus開(kāi)啟二級(jí)緩存的方法詳解

    這篇文章主要介紹了MybatisPlus開(kāi)啟二級(jí)緩存的方法詳解,二級(jí)緩存是基于mapper文件的namespace級(jí)別,也就是說(shuō)多個(gè)sqlSession可以共享一個(gè)mapper中的二級(jí)緩存區(qū)域,需要的朋友可以參考下
    2023-11-11
  • Java BigDecimal基礎(chǔ)用法詳解

    Java BigDecimal基礎(chǔ)用法詳解

    Java在java.math包中提供的API類BigDecimal,用來(lái)對(duì)超過(guò)16位有效位的數(shù)進(jìn)行精確的運(yùn)算。雙精度浮點(diǎn)型變量double可以處理16位有效數(shù),但在實(shí)際應(yīng)用中,可能需要對(duì)更大或者更小的數(shù)進(jìn)行運(yùn)算和處理
    2022-06-06
  • Spring?注入靜態(tài)對(duì)象使用三種方式示例

    Spring?注入靜態(tài)對(duì)象使用三種方式示例

    這篇文章主要為大家介紹了Spring注入靜態(tài)對(duì)象使用的三種方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • SpringMVC?RESTFul及REST架構(gòu)風(fēng)格介紹

    SpringMVC?RESTFul及REST架構(gòu)風(fēng)格介紹

    這篇文章主要為大家介紹了SpringMVC?RESTFul及REST架構(gòu)風(fēng)格介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • JDK10新特性之var泛型和多個(gè)接口實(shí)現(xiàn)方法

    JDK10新特性之var泛型和多個(gè)接口實(shí)現(xiàn)方法

    這篇文章主要介紹了JDK10的新特性:var泛型和多個(gè)接口實(shí)現(xiàn)方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java8中使用流方式查詢數(shù)據(jù)庫(kù)的方法

    Java8中使用流方式查詢數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了Java8中使用流方式查詢數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2016-01-01

最新評(píng)論