日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java进程被kill_定位JAVA进程被kill的原因

發(fā)布時(shí)間:2024/9/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java进程被kill_定位JAVA进程被kill的原因 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

哪些原因可能會(huì)導(dǎo)致JAVA進(jìn)程被kill呢?

Java應(yīng)用程序的問題:發(fā)生OOM導(dǎo)致進(jìn)程Crash

JVM自身故障:JVM或JDK自身的Bug導(dǎo)致進(jìn)程Crash

被操作系統(tǒng)OOM-Killer

該如何去排查問題呢?

Java應(yīng)用程序的問題:發(fā)生OOM導(dǎo)致進(jìn)程Crash

這種情況主要取決于研發(fā)代碼質(zhì)量,我遇到過的大概有2次。一般情況下,出現(xiàn)OOM異常,JVM的GC會(huì)進(jìn)行回收,是不會(huì)直接導(dǎo)致JVM進(jìn)程退出的。如果出現(xiàn)退出的情況,那就是內(nèi)存泄漏,由于內(nèi)存占用越來越大,結(jié)果。。。。不過這種JVM的OOM導(dǎo)致的異常,很好排查。排查步驟如下:

Step1: 查看JVM參數(shù) -XX:+HeapDumpOnOutOfMemoryError 和 -XX:HeapDumpPath=*/java.hprof

Step2: 根據(jù)HeapDumpPath指定的路徑查看是否產(chǎn)生dump文件;

Step3: 若存在dump文件,使用VisualVM這種可視化工具分析就行等工具分析即可;

JVM自身故障:JVM或JDK自身的Bug導(dǎo)致進(jìn)程Crash

這種情況遇到一次,是因?yàn)镴DK自身BUG導(dǎo)致的。當(dāng)JVM出現(xiàn)致命錯(cuò)誤時(shí),會(huì)生成一個(gè)hs_err_pid_xxx.log這樣的文件,該文件包含了導(dǎo)致jvm crash的重要信息,可以通過分析該文件定位到導(dǎo)致crash的根源,從而改善以保證系統(tǒng)穩(wěn)定。當(dāng)出現(xiàn)crash時(shí),該文件默認(rèn)會(huì)生成到工作目錄下,然而可以通過jvm參數(shù)-XX:ErrorFile指定生成路徑,eg:

-XX:ErrorFile=/var/log/hs_err_pid.log

然后根據(jù)錯(cuò)誤信息,可以進(jìn)入Java BUG dataBase庫中去查找對應(yīng)的BUG:

https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8134389

被操作系統(tǒng)OOM-Killer

這種情況也遇到過一次。Linux 內(nèi)核有個(gè)機(jī)制叫OOM killer(Out-Of-Memory killer),該機(jī)制會(huì)監(jiān)控那些占用內(nèi)存過大,尤其是瞬間很快消耗大量內(nèi)存的進(jìn)程,為了防止內(nèi)存耗盡而內(nèi)核會(huì)把該進(jìn)程殺掉。可以去/var/log/messages里翻系統(tǒng)報(bào)錯(cuò)日志,執(zhí)行如下命令:

[root@vmt124-m5 /]# egrep -i 'killed process' /var/log/messages

Dec 29 00:39:41 localhost kernel: Killed process 26790, UID 0, (java) total-vm:9263796kB, anon-rss:4578020kB, file-rss:20kB

當(dāng)然,你也可以去內(nèi)核日志里頭查詢。有時(shí)Linux系統(tǒng)或者系統(tǒng)上運(yùn)行的java或者其它進(jìn)程,會(huì)發(fā)生一些莫名其妙的問題,比如突然掛掉了,比如突然重啟等等。在軟件上找不到問題所在,此時(shí)我們應(yīng)該懷疑硬件或者內(nèi)核的問題,此時(shí)我們就可以執(zhí)行 dmesg | grep java命令來查看:

[root@vmt124-m5 /]# dmesg | grep java

java invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0

java cpuset=/ mems_allowed=0

Pid: 25475, comm: java Not tainted 2.6.32-220.el6.x86_64 #1

[31952] 0 31952 2338119 469643 2 0 0 java

[ 2435] 5025 2435 830476 11657 0 0 0 java

[26790] 0 26790 2315949 1144510 1 0 0 java

Out of memory: Kill process 26790 (java) score 560 or sacrifice child

Killed process 26790, UID 0, (java) total-vm:9263796kB, anon-rss:4578020kB, file-rss:20kB

完全是可以看到內(nèi)核對進(jìn)程做對操作。

總結(jié)

對以上異常出現(xiàn)排查的排查順序一般是:Java應(yīng)用程序的問題 -> JVM自身故障 -> 被操作系統(tǒng)OOM-Killer。

總結(jié)

以上是生活随笔為你收集整理的java进程被kill_定位JAVA进程被kill的原因的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。