JVM调优


目的

  • 减小响应时间
  • 提高吞吐量

参数

  • -XX:UseXXXGC
  • -Xms和-Xmx
  • -XX:NewRatio
  • -XX:SurvivorRatio
  • -XX:+UseAdaptiveSizePolicy
  • -XX:+HeapDumpOnOutOfMemoryError
  • -XX:HeapDumpPath
  • -XX:MaxTenuringThreshold
  • -Xloggc:/xxx/logs/xxx-gc-%t.log

-XX:+UseGCLogFileRotation
-XX:+NumberOfGCLogFiles=5
-XX:+GCLogFileSize=20M
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps

步骤

  • 熟悉业务场景
  • 选择合理的垃圾收集器
  • 计算内存需求
  • 设定年轻代老年大小
  • 设置日志参数
  • 压力测试
  • 分析日志
  • 调整参数

实例操作

运行打包好的jar 对比测试
比对一:nohup java -jar xxx.jar >stock.log 2>&1&

比对二:nohup java -jar -Xmx1500m -Xms1500m -XX:SurvivorRatio=8 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:./gclogs xxx.jar >stock.log 2>&1&

查看是否运行
jps -l

进行模拟10个用户10W次请求
命令:ab -c 10 -n 100000 http://127.0.0.1:9091/stock/xxxx

注:若没有ab命令,安装yum -y install httpd-tools

打印日志:
jstat -gc 4102 5000 20|awk '{print $13,$14,$15,$16,$17}'

最后可以通过gcviewer工具 查看分析


通常遇到CPU 100%或者占用率非常高的时候,可以进行以下方法查找:

使用top 命令

[root@localhost ~]# top

根据进程号,查看堆栈的情况

[root@localhost ~]# jps -l
[root@localhost ~]# jstack 4856

导出文件

[root@localhost ~]# jstack 4856 >> 4856.txt

由于导出的文件内容信息多,需要定位线程信息

[root@localhost ~]# ps -mpp 4856 -o THREAD,tid,time

由于结果查找出来得结果为16进制,需转换成10进制

[root@localhost ~]# printf "%x\n" 4856

根据10进制数,进入4856.txt文件查找

[root@localhost ~]# vi  4856.txt

谢谢观看阅读,麻烦点个赞呀呀呀呀呀呀,谢谢~~~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值