zoukankan      html  css  js  c++  java
  • 服务器内存泄露 , 重启后恢复问题解决方案

     最近爆发了一个问题 , 以前一直在正常运行的应用突然无法访问 .

    不用问,这个肯定是服务器的问题,但是这个要怎么看呢?

    1.登录服务器,如果服务器压力过大,已经无法登录服务器了,那么只能请求DBA强制重启了.

      1.1. 假设能登陆服务器,马上查看服务器CPU以及内存或者回收等信息,可以那么使用以下方法收集日志和查看CPU,手速一定要快,比较用户都在催,电话,微信,qq都在响..收集完了就重启服务器,现正常了再查原因.

      附图:为了大家能够熟练敲打,照着多打吧.

      

    2.登录之后查看回收效率以及速度:

      1.通过 ps -ef|grep java 得到pid:如图:

      

    2.通过 ps -p 101040 -o etime;jstat -gcutil 101040 1000 30  

      上面的命令意思:

      ps -p 101040 -o etime 查看的是应用运行时长

      jstat -gcutil 为查看jvm gc回收情况的命令

      101040 为上图的PID

      1000为时间间隔,单位毫秒

      30为打印的条数,不设定则一直打印

    至于打印什么东西??请看下面:

      

     结果中每个项目的含义可以参考官方对jstat的文档,简单翻译如下:(参考别人的翻译)

    - S0C: Young Generation第一个survivor space的内存大小 (kB).
    - S1C: Young Generation第二个survivor space的内存大小 (kB).
    - S0U: Young Generation第一个Survivor space当前已使用的内存大小 (kB).
    - S1U: Young Generation第二个Survivor space当前已经使用的内存大小 (kB).
    - EC: Young Generation中eden space的内存大小 (kB).
    - EU: Young Generation中Eden space当前已使用的内存大小 (kB).
    - OC: Old Generation的内存大小 (kB).
    - OU: Old Generation当前已使用的内存大小 (kB).
    - PC: Permanent Generation的内存大小 (kB)
    - PU: Permanent Generation当前已使用的内存大小 (kB).
    - YGC: 从启动到采样时Young Generation GC的次数
    - YGCT: 从启动到采样时Young Generation GC所用的时间 (s).
    - FGC: 从启动到采样时Old Generation GC的次数.
    - FGCT: 从启动到采样时Old Generation GC所用的时间 (s).
    - GCT: 从启动到采样时GC所用的总时间 (s).

     

    3.上面都是查看JVM的内存情况,具体表现为jvm内存泄露,解决方案现在有2个:

      1.具体问题具体分析,找到内存泄露的瓶颈,上面所搜集的日志可以帮助你找到问题的根源;

      2.短期内需要保证项目运行,那么请将JVM的内存加大,1G的加到2G,2G的加到4G等...

        调整方式(Tomcat为例,其他容器自行参考)

        1.打开文件:自己的tomcat目录/bin/catalina.sh

        2.找到如下参数,并将其修改为如下:

    JAVA_OPTS="-server -Xms4096m -Xmx4096m"
    JavaOpts里面的server参数足够用了,其余多余的参数其实没什么用(项目自行配置),将上面的内存大小调整即可,如上面为4096M=4G.

      调整内存只是权宜之计,根本问题还是要找到瓶颈,对症下药!!!

      祝大家永无bug.

        

  • 相关阅读:
    日志框架1---多种日志门面和日志实现初步了解(转载)
    @Autowired 与@Resource的区别(转)
    Spring 之jdbc模板(JdbcTemplate与NamedParameterJdbcTemplate)
    springMVC中的Controller里面定义全局变量
    spring批量更新数据 ---- BatchPreparedStatementSetter
    easyui树查找
    根据ID和parentID利用Java递归获取全路径名称
    一个统一将数据转换为JSON的方法
    上传图片并限制图片格式和大小
    js上传文件(图片)的格式和大小限制
  • 原文地址:https://www.cnblogs.com/pongyc/p/9646433.html
Copyright © 2011-2022 走看看