• 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"

  • 相关阅读:
    印刷行业合版BOM全阶维护示例
    C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法
    EasyUI Tree节点拖动到指定容器
    Excel GET.DOCUMENT说明
    Excel GET.CELL说明
    ExecuteExcel4Macro (宏函数)使用说明
    MSSQL:查看所有触发器信息的命令
    SQL Server 2008作业失败:无法确定所有者是否有服务器访问权限
    Cocoa History
    Working with Methods
  • 原文地址:https://www.cnblogs.com/danny-djy/p/9237810.html
Copyright © 2020-2023  润新知