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

jar包運行一段時間后莫名其妙掛掉線上問題及處理方案

 更新時間:2023年09月20日 15:28:59   作者:心如活水  
這篇文章主要介紹了jar包運行一段時間后莫名其妙掛掉線上問題及處理方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1、問題描述

springboot搭建的項目打包成jar包部署到Linux操作系統(tǒng)中,采用nohup java -jar 部署 jar 包后過一段時間(兩三天)后莫名其妙掛掉(進程號PID被殺)。

2、問題定位

2.1 度娘一下

遇到這種問題,首先當然是去度娘找找看看有沒有相似的人有這樣的bug,看看別人的處理方法解決,結(jié)果當然是沒找到合適的博客,所以就只能自己摸索摸索解決之道了。

2.2 基本操作

既然沒有找到想要的,這種情況百分之九十九點九九九......的概率是內(nèi)存泄露導致的。

那基本操作來一下

2.2.1 top、free -m 指令

先用top指令看下Linux系統(tǒng)中的進程號使用情況

從上圖可看到,cpu的占用竟然干到了 100.3%以上,這么耗費cup資源,肯定就是程序有問題了。

接著用 free -m查看下內(nèi)存使用情況

結(jié)果發(fā)現(xiàn)這個空閑內(nèi)存越來越少了,還真的是內(nèi)存有問題。

3、問題深入定位

上面只是初步知道程序有問題,但是還是不知道具體的問題再哪里?

就是這個問題在代碼中哪里造成的還是不清楚

3.1 top -Hp PID 指令

輸入PID指令將程序進程號的子線程使用系統(tǒng)資源的線程列舉出來

從上圖中可以看到733這個子線程占用了99.9%的cup使用率,這個線程肯定是有問題的,這個就要進入到JVM的棧中分析問題了,這里需要使用jstack工具進行分析問題。

3.2  jstack -l PID |grep -A 10 NID

因為在棧中的線程號是以16進制進行的,所以需要將上面733這個線程號轉(zhuǎn)成16進制的數(shù)據(jù),直接在Linux中轉(zhuǎn)換: printf "%x\n"  733

然后采用jstack棧分析工具進行問題分析

jstack -l 655 |grep -A 10 0x2dd

這里的10是指打印10行的日志

找到這個子線程號,并且看到自己的報名和類,這個線程占用cpu 99.9%以上的資源就在類

ServerHandler的129行,趕緊去看看自己這個類的第129行到底寫了什么東西。

這段代碼直接導致了死循環(huán),該段代碼是希望讀到輸入流里面總的字節(jié)大小,但有時候因為網(wǎng)絡原因無法一次讀到結(jié)果,再加上while死循環(huán),如果一直讀不到,死循環(huán)就一直執(zhí)行下去,故造成了死循環(huán)

4、解決

將上面導致死循環(huán)的代碼注釋掉改為緩存處理

5、后續(xù)

以上是一次線程問題的解決,其實一次線上問題解決沒有那么快就排查出來的,如果涉及到堆問題,需要將堆問題、棧日志打印保存下來分析

堆文件生成:

jmap -dump:format=b,file=heap.hprof pid //保存了堆現(xiàn)場,b這里是字節(jié)的意思

(生成的堆文件采用mat分析軟件定位問題)

  • 棧日志生成:jstack pid > jstack.log //線程棧的現(xiàn)場
  • gc執(zhí)行情況:jstat -gcutil 6343 5000  //每隔5秒檢查gc使用情況

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • idea查看properties中文變成unicode碼的解決方案

    idea查看properties中文變成unicode碼的解決方案

    這篇文章主要介紹了idea查看properties中文變成unicode碼的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 解決SpringBoot配置文件application.yml遇到的坑

    解決SpringBoot配置文件application.yml遇到的坑

    這篇文章主要介紹了解決SpringBoot配置文件application.yml遇到的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java抽獎算法第二例

    Java抽獎算法第二例

    這篇文章主要為大家詳細介紹了Java抽獎算法,根據(jù)概率將獎品劃分區(qū)間,每個區(qū)間代表一個獎品,然后抽取隨機數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Java快速排序的實現(xiàn)詳細代碼及通俗解釋

    Java快速排序的實現(xiàn)詳細代碼及通俗解釋

    這篇文章主要介紹了Java快速排序?qū)崿F(xiàn)的相關資料,快速排序是一種高效的排序算法,通過選擇一個基準值將數(shù)組分成兩部分,左邊的元素比基準值小,右邊的元素比基準值大,然后遞歸地對這兩部分進行排序,需要的朋友可以參考下
    2025-02-02
  • Java使用for循環(huán)解決經(jīng)典的雞兔同籠問題示例

    Java使用for循環(huán)解決經(jīng)典的雞兔同籠問題示例

    這篇文章主要介紹了Java使用for循環(huán)解決經(jīng)典的雞兔同籠問題,結(jié)合實例形式分析了Java巧妙使用流程控制語句for循環(huán)解決雞兔同籠問題相關操作技巧,需要的朋友可以參考下
    2018-05-05
  • Mybatis-Plus環(huán)境配置與入門案例分析

    Mybatis-Plus環(huán)境配置與入門案例分析

    MyBatis-Plus 是一個 Mybatis 增強版工具,在 MyBatis 上擴充了其他功能沒有改變其基本功能,為了簡化開發(fā)提交效率而存在,本篇文章帶你配置環(huán)境并認識它
    2022-03-03
  • java實現(xiàn)文件上傳和下載

    java實現(xiàn)文件上傳和下載

    這篇文章主要為大家詳細介紹了java實現(xiàn)文件上傳和下載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Spring Boot 使用 logback、logstash、ELK 記錄日志文件的方法

    Spring Boot 使用 logback、logstash、ELK 記錄日志文件的方法

    這篇文章主要介紹了Spring Boot 使用 logback、logstash、ELK 記錄日志文件的思路詳解,文中給大家提到了logback 取代 log4j的理由,需要的朋友可以參考下
    2017-12-12
  • Java I/O技術之文件操作詳解

    Java I/O技術之文件操作詳解

    這篇文章主要介紹了Java I/O技術之文件操作詳解,需要的朋友可以參考下
    2014-07-07
  • 淺析Android系統(tǒng)中HTTPS通信的實現(xiàn)

    淺析Android系統(tǒng)中HTTPS通信的實現(xiàn)

    這篇文章主要介紹了淺析Android系統(tǒng)中HTTPS通信的實現(xiàn),實現(xiàn)握手的源碼為Java語言編寫,需要的朋友可以參考下
    2015-07-07

最新評論