美文网首页
故障排查:java应用启动后进程自动被杀

故障排查:java应用启动后进程自动被杀

作者: cherishpf | 来源:发表于2019-03-01 16:46 被阅读0次

java项目部署以后,过一段时间发现进程已不存在,

启动java项目命令如下,启动日志写入当前目录下的nohup.out文件:

# nohup java -jar server-0.0.1-SNAPSHOT.jar & 

[6] 118424 

# nohup: ignoring input and appending output to ‘nohup.out’

查看进程存在:

# ps -ef |grep server-0.0.1-SNAPSHOT.jar

root      118424   1  1 15:20 pts/1    00:00:56 java -jar /data/workspace/server-0.0.1-SNAPSHOT.jar

查看项目占用的端口是否正常在监听:

# netstat -tulnp|grep 8084 

tcp6 0 0 :::8084 :::* LISTEN 118424/java 

一段时间后进程不存在了,查看项目日志未发现报错或异常;

于是,查看系统日志:

# tail -f /var/log/messages

Mar  1 15:14:08 s6 kernel: [124232]    0 124232    28177      61      12        0            0 grep

Mar  1 15:14:08 s6 kernel: Out of memory: Kill process 118430 (java) score 78 or sacrifice child

Mar  1 15:14:08 s6 kernel: Killed process 118430 (java) total-vm:5745276kB, anon-rss:978344kB, file-rss:1140kB, shmem-rss:0kB

Mar  1 15:17:12 s6 clamd[12450]: SelfCheck: Database status OK.

发现是因为内存溢出!

于是手动杀掉暂时未使用的进程,比如微服务的应用,是服务器内存空闲出一部分,重新启动server-0.0.1-SNAPSHOT.jar应用,恢复正常,进程没有再自动挂掉了。

理论解释:

        操作系统(operating system)构建在进程(process)的基础上, 进程由内核作业(kernel jobs)进行调度和维护,其中有一个内核作业称为 “Out of memory killer(OOM终结者)”,Out of memory killer 在可用内存极低的情况下会杀死某些进程。只要达到触发条件就会激活,选中某个进程并杀掉。 通常采用启发式算法,对所有进程计算评分(heuristics scoring),得分最低的进程将被 kill 掉。 Out of memory: Kill process or sacrifice child 既不由JVM触发,也不由JVM代理,而是系统内核内置的一种安全保护措施。如果可用内存(含swap)不足, 就有可能会影响系统稳定,这时候 Out of memory killer 就会设法找出流氓进程并杀死他,也就是引起 Out of memory: kill process or sacrifice child 错误。

相关文章

  • 故障排查:java应用启动后进程自动被杀

    java项目部署以后,过一段时间发现进程已不存在, 启动java项目命令如下,启动日志写入当前目录下的nohup....

  • java进程运行一段时间后自动被杀掉

    java进程运行一段时间后自动被杀掉 最近测试服务器上的java项目老是莫名其妙被自动杀掉,于是查看进程被杀掉的日...

  • 冷启动 原理 及 优化加速

    冷启动:应用进程被杀掉状态下的启动;热启动:应用进程仍然存活状态下,点击桌面APP的图标启动或从任务列表启动。 冷...

  • 高内存占用处理方法

    前一篇介绍了线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查。 搞Java开发的,经常会碰到下...

  • NBU故障之服务器重启后NBU服务部分进程处理

    故障: 重启服务器后以下进程没有启动,导致nbu服务启动不全,在Redhat7.2操作系统下遇到过以下服务无法自动...

  • Java应用服务器CPU占用过高原因排查

    Java应用服务器CPU占用过高原因排查 问题 Java应用服务器进程出现CPU占用率过高情况 排查过程 找到占用...

  • 定位JAVA进程被kill的原因

    哪些原因可能会导致JAVA进程被kill呢? Java应用程序的问题:发生OOM导致进程Crash JVM自身故障...

  • Android性能优化之启动优化

    应用启动类型 冷启动场景:开机后第一次启动应用 或者 应用被杀死后再次启动生命周期:Process.start->...

  • javaSE_day17_反射

    应用程序启动: java 类名 调用JVM,启动 JVM进程 应用程序结束: 1.所有代码执行完了; ...

  • systemd

    我要解决什么问题 启动重启后如何让分区自动挂载如何让服务进程自动启动 服务进程意外终止如何自动重启 什么工具能解决...

网友评论

      本文标题:故障排查:java应用启动后进程自动被杀

      本文链接:https://www.haomeiwen.com/subject/iuaduqtx.html