• jvmgc调优2


    系统崩溃了, 所有请求超时
    看系统cpu :

    top 
    1  

    查看系统cpu使用 。 
    top -H -p pid   # 查看java检查中线程使用情况 。 如:top -H -p 13310

    发现很多线程cpu使用率为100%。

    出现的第一列pid 是线程id  如 13333,将其转16进制  : 3415 

    查看进程13310中的线程号为3415的线程
    ./jstack 13310 |grep -A 50 3415   # nid 就是线程id 。 
    "GC task thread#5 (ParallelGC)" os_prio=0 tid=0x00007f26f8067800 nid=0x3415 runnable 
    检查所有线程

    ./jstack 13310 >> 123.txt  

    jstat -gcutil 13310   # 查看gc总共消耗时间

    jstat -heap 13310 # 版本不一致还是啥问题, 查看不了 

    生成dump 

    ./jmap -dump:file=ipt.dump 13310

    由于服务dump 已经到了8g,不好查看处理 

    java项目启动参数:

    //指定GC文件输出路径
    ‐Xloggc:./gc‐%t.log
    //开启打印GC日志
    ‐XX:+PrintGCDetails
    //打印GC的日期与时间
    ‐XX:+PrintGCDateStamps
    ‐XX:+PrintGCTimeStamps
    //打印GC原因
    ‐XX:+PrintGCCause
    //使用滚动日志打印,一共20个文件,每个文件100M
    ‐XX:+UseGCLogFileRotation
    ‐XX:NumberOfGCLogFiles=10
    ‐XX:GCLogFileSize=100M

    修改项目启动脚本:

     java -Xms128m -Xmx1024m -XX:+PrintGCDateStamps -XX:+PrintGCDetails ‐XX:+PrintGCCause -Xloggc:./logs/gclogs -jar ***.jar --server.port=8082 > /dev/null 2>&1 &

    由于减少了内存, 上面的系统崩溃不一定会出现, 但是假死应该还会出现, 等待分析Gc 输出。

    日志输出异常: 

    2022-05-31T10:27:13.191+0800: 12.162: [Full GC (Metadata GC Threshold)   ……………………[Times: user=7.16 sys=0.04, real=0.30 secs]                #user 耗费高 , 实际清理只有0.3  。 用户线程等待耗时。

    加入打印JVM暂停的时间, 安全点日志。 

        启动参数

    -XX:+UnlockDiagnosticVMOptions

    -XX:+LogVMOutput

    -XX:LogFile=/dev/shm/vm.log

    -XX:+PrintSafepointStatistics

    -XX:PrintSafepointStatisticsCount=1
     

     java -Xms128m -Xmx1024m  -XX:+PrintGCApplicationStoppedTime  -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:./logs/gclogs   -jar ***.jar --server.port=8082 > /dev/null 2>&1 &


    java -Xms128m -Xmx1024m -XX:+SafepointTimeout -XX:SafepointTimeoutDelay=5000 -XX:+PrintGCApplicationStoppedTime  -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:./logs/gclogs   -jar ***.jar --server.port=8082 > /dev/null 2>&1 &

    #-XX:+UnlockDiagnosticVMOptions

    #-XX:+LogVMOutput

    #-XX:LogFile=/dev/shm/vm.log




  • 相关阅读:
    jquery特效(2)—选项卡
    CSS3学习笔记(3)—左右飞入的文字
    jquery特效(1)—点击展示与隐藏全文
    javascript学习的思维导图
    CSS3学习笔记(2)—左右跳动的红心
    CSS3学习笔记(1)—淡入的文字
    关于加入博客园的感想
    小程序json字符串转为对象
    小程序页面传值e.currentTarget
    原生js获取元素的子元素
  • 原文地址:https://www.cnblogs.com/heshana/p/16329568.html
Copyright © 2020-2023  润新知