zoukankan      html  css  js  c++  java
  • Linux java进程无故被kill

    这两天,演示环境的java应用无端端就被停止了。在这里记录一下原因和排查过程:

    发现应用挂掉以后,第一时间登陆centos,发现进程没有了。于是重新启动应用。

    但是启动不起来,去看业务日志,没有找到任何堆栈信息。

    后来,在同事的指导下,找到了jdk的错误日志(如果没有指定,通常生产在应用的bin目录下):hs_err_pid9758.log

    Memory: 4k page, physical 16267588k(171288k free), swap 0k(0k free)

    vm_info: OpenJDK 64-Bit Server VM (25.171-b10) for linux-amd64 JRE (1.8.0_171-b10), built on May 9 2018 13:15:45 by "mockbuild" with gcc 4.8.5 20150623 (Red Hat 4.8.5-28)

    time: Tue Jun 26 08:14:28 2018
    elapsed time: 50 seconds (0d 0h 0m 50s)

    提示交换区内存不足。

    但是通过top查看内存使用情况,还有2个G的内存可用。

    通过查看linux的系统日志:/var/log/message发现了问题:

    Jun 27 11:25:19 sie2 kernel: [25602] 1003 25602 1337279 292684 724 0 0 java
    Jun 27 11:25:19 sie2 kernel: [12954] 994 12954 11852 606 26 0 0 nginx
    Jun 27 11:25:19 sie2 kernel: [18231] 0 18231 124404 1314 33 0 -500 docker-containe
    Jun 27 11:25:19 sie2 kernel: [30917] 1001 30917 1262181 453358 1095 0 0 java
    Jun 27 11:25:19 sie2 kernel: [31228] 1001 31228 1200523 135094 385 0 0 java
    Jun 27 11:25:19 sie2 kernel: [31751] 1000 31751 1191745 420641 980 0 0 java
    Jun 27 11:25:19 sie2 kernel: [30786] 0 30786 37204 640 74 0 0 sshd
    Jun 27 11:25:19 sie2 kernel: [30797] 0 30797 28845 253 13 0 0 bash
    Jun 27 11:25:19 sie2 kernel: [31653] 0 31653 37204 640 73 0 0 sshd
    Jun 27 11:25:19 sie2 kernel: [31661] 0 31661 28879 321 14 0 0 bash
    Jun 27 11:25:19 sie2 kernel: [32170] 0 32170 37204 634 74 0 0 sshd
    Jun 27 11:25:19 sie2 kernel: [32176] 0 32176 28876 333 13 0 0 bash
    Jun 27 11:25:19 sie2 kernel: [32539] 89 32539 22419 480 43 0 0 pickup
    Jun 27 11:25:19 sie2 kernel: [ 1820] 0 1820 37204 838 76 0 0 sshd
    Jun 27 11:25:19 sie2 kernel: [ 1824] 0 1824 37204 837 74 0 0 sshd
    Jun 27 11:25:19 sie2 kernel: [ 1826] 0 1826 28879 344 13 0 0 bash
    Jun 27 11:25:19 sie2 kernel: [ 1846] 0 1846 28879 320 13 0 0 bash
    Jun 27 11:25:19 sie2 kernel: [ 2059] 997 2059 28281 227 11 0 0 thingsboard.jar
    Jun 27 11:25:19 sie2 kernel: [ 2072] 997 2072 1768449 1110739 2273 0 0 java
    Jun 27 11:25:19 sie2 kernel: Out of memory: Kill process 2072 (java) score 273 or sacrifice child

    原因分析(引用自:https://www.cnblogs.com/-scl/p/7152168.html):

    解:内存不足,自动查杀了进程,即杀死了项目进程,项目不能启动

    这个问题的原因是low memory耗尽。“内核使用low memory来跟踪所有的内存分配,一旦low memory耗尽,就会查杀进程,以保持系统的正常运转。说白了 OOM Killer 就是一层保护机制,用于避免 Linux 在内存不足的时候不至于出太严重的问题,把无关紧要的进程杀掉

    解:找到:bin/catalina.sh,在这个前面 echo "Using CATALINA_BASE:   $CATALINA_BASE"加上这一条,JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"

  • 相关阅读:
    POJ 1328 Radar Installation
    POJ 1700 Crossing River
    POJ 1700 Crossing River
    poj 3253 Fence Repair (贪心,优先队列)
    poj 3253 Fence Repair (贪心,优先队列)
    poj 3069 Saruman's Army(贪心)
    poj 3069 Saruman's Army(贪心)
    Redis 笔记与总结2 String 类型和 Hash 类型
    数据分析方法有哪些_数据分析方法
    数据分析方法有哪些_数据分析方法
  • 原文地址:https://www.cnblogs.com/danny-djy/p/9237810.html
Copyright © 2011-2022 走看看