• java服务突然被挂掉,停止服务处理方案


    一、问题背景

      该问题出现在我们测试环境。测试环境部署了很多java应用。

      其中一个数据服务(主要提供订单交易数据聚合查询),用着用着就服务挂掉了也就是进程没有了。

    二、分析过程

      1.了解服务器配置  =====》 4核8G内存

      2.通过 ps -ef|grep java 查看被关掉的应用 当前进程id及PID 和分配的内存大小 =====》 1G =>4G (下图是我处理完后截取的图片所以最大值只是2G)

      3.通过top -p PID 命令实时查看该PID内存使用情况

      4.根据现象发现问题

        发现该java应用的使用内存,只增不减。也就是java垃圾收集器并没有触发。

        原来JAVA虚拟机会一直增加内存占用,一直到你设置的最大内存4096M附近,才会触发垃圾回收机制,内存回收。但是由于服务器部署了很多其他java应用占用了4G左右,无法分配给该应用4G内存。当快达到4G时,导致服务器内存告警而将该进程kill掉

    三、解决方案

      将java虚拟机内存最大值调低到不大于服务器剩余的内存。

      我将服务器内存从4G调到2G就可以了,该应用内存使用一直维持在2G内(快到2G时会触发垃圾回收的),从而不会导致总内存不足导致服务器kill掉进程。

      -Xms1024m -Xmx2048m

        

      

  • 相关阅读:
    获取服务结合随机算法
    服务发现
    使用第三方库来支持平滑重启
    简易配置中心Confd入手
    8、SQL基础整理(约束)
    7、SQL基础整理(子查询)
    6、SQL基础整理(日期时间数据类型,转换函数)
    5、SQL基础整理(字符串函数)
    4、SQL基础整理(规范函数)
    3、SQL基础整理(分组)
  • 原文地址:https://www.cnblogs.com/756623607-zhang/p/8430203.html
Copyright © 2020-2023  润新知