• jvm调优


    一般在jdk机器上可以通过命令粗略查看jvm当前参数运行状态,根据状态跟应用性质来调整参数

    jstat -gcutil jvm的pid号----改命令可查看jvm堆内存分配的使用的百分比情况与普通GC,FULLGC从启动到查看为止所执行的次数以及执行时间

    jstat -gacapity jvm的pid好---该命令可查看使用的内存量,与GC时间

    当然详细情况需要通过gc日志来分析

    tomcat开启GC日志记录

    vim bin/catalina.sh  先编辑tomcat启动脚本,加上初始化jvm参数

    JAVA_OPTS='-Xms512m -Xmx4096m -XX:PermSize=64M -XX:MaxNewSize=128m -XX:MaxPermSize=64m -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -Xloggc:/usr/local/tomcat/logs/tomcat_gc.log'

    重启tomcat

    可以使用windows下的gchisto软件把获取到的日志导进去,查看具体性能分析

    也可以用在线工具https://gceasy.io/把日志包导进去获取性能分析

    根据日志的gc响应时间跟应用类加载对象实例存活时间特点调整jvm参数

    一般,如果对象存活时间短,那么可以设置年轻代的大小大,还有就是如果追求响应时间快,也可设置大内存

    当年轻代内存大时,普通GC的周期会小,年轻代大,年老代就小,如果此时进入年老代的实例多的话,那么就会进行频繁full gc,由于年老代gc一般是用串行回收器的

    所以,full gc的时间就会变长,而在gc的时候,对外是不响应请求的,这样用户体验就不好,还有就是,如果前面还有反向代理的话,反代的后端健康检查失效时间必须要大于gc的时间

  • 相关阅读:
    cron表达式详解
    C# Quartz 调度任务辅助类
    SQLserver查询用逗号隔开的字段中是否包含另一个字段的值
    c# 将字符串转换为逻辑表达式(字符串转换布尔)
    铺砖块
    字符串涂漆
    快餐店
    乘号加号
    传纸条(lgP1006)
    小明的喷漆计划
  • 原文地址:https://www.cnblogs.com/allmdzz/p/11289799.html
Copyright © 2020-2023  润新知