ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JVM调优

2022-01-17 16:37:23  阅读:113  来源: 互联网

标签:XX 调优 线程 内存 JVM 时间


1.了解JVM常用命令行参数

HotSpot参数分类

标准: - 开头,所有的HotSpot都支持

非标准:-X 开头,特定版本HotSpot支持特定命令

不稳定:-XX 开头,下个版本可能取消

java -XX:+PrintFlagsFinal | grep xxx 找到对应的参数

java -XX:+PrintFlagsFinal -version |grep GC

参考链接:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

2.调优前的基础概念

1.吞吐量:用户代码时间 /(用户代码执行时间 + 垃圾回收时间)。吞吐量优先的一般:(PS + PO)

2.响应时间:STW越短,响应时间越好。响应时间优先用G1

3.什么是调优

1.根据需求进行JVM规划和预调优

2.优化JVM运行环境(慢,卡顿)

3.解决JVM运行过程中出现的各种问题(OOM)

4.调优从规划开始

  • 调优,从业务场景开始,没有业务场景的调优都是耍流氓

  • 无监控(压力测试,能看到结果),不调优

  • 步骤

    1.熟悉业务场景(没有最好的垃圾回收器,只有最合适的垃圾回收器)

    1.响应时间、停顿时间 [CMS G1 ZGC] (需要给用户作响应)

    2.吞吐量 = 用户时间 /( 用户时间 + GC时间) [PS]

    2.选择回收器组合

    3.计算内存需求(经验值)

    4.选定CPU(越高越好)

    5.设定年代大小、升级年龄(一般不需要设置)

    6.设定日志参数

    1.-Xloggc:/opt/xxx/logs/xxx-xxx-gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCCause (gc日志文件路径,循环打印,一共5个日志文件,每个文件大小20mb,打印gc详细信息,发生gc的时间和原因)

    2.或者每天产生一个日志文件

    7.观察日志情况

  • 案例1:垂直电商,最高每日百万订单,处理订单系统需要什么样的服务器配置?

    很业余的问法

    这种情况一般要估算业务最高峰值(比如5000订单/秒),根据最高峰值来估算系统资源,然后压测

  • 案例2:12306遭遇春节大规模抢票应该如何支撑?

    12306应该是中国并发量最大的秒杀网站,号称并发量100W最高

    CDN -> LVS -> NGINX -> 业务系统 -> 每台机器1W并发(10K问题) 100台机器

    大流量的处理方法:分而治之

5.优化环境

  1. 有一个50万PV的资料类网站(从磁盘提取文档到内存)原服务器32位,1.5G的堆,用户反馈网站比较缓慢,因此公司决定升级,新的服务器为64位,16G的堆内存,结果用户反馈卡顿十分严重,反而比以前效率更低了

    1.为什么原网站慢:很多用户浏览数据,很多数据load到内存,内存不足,频繁GC,STW长,响应时间变慢

    2.升级服务器后为什么会更卡顿:内存越大,FGC时间越长

    3.如何优化:PS+PO -> PN + CMS 或者 G1,最直接的应该是从业务上优化,不要把文档加载到内存,而是用一个文件服务器之类的

  2. 系统CPU经常100%,如何调优?(面试高频)

    1.CPU100%那么一定有线程在占用系统资源

    2.找出哪个进程cpu高(top)

    3.该进程中的哪个线程cpu高(top -Hp)

    4.导出该线程的堆栈 (jstack)

    5.查找哪个方法(栈帧)消耗时间 (jstack)

    6.观察是工作线程占比高 | 垃圾回收线程占比高

  3. 系统内存飙高,如何查找问题?(面试高频)

    1.导出堆内存 (jmap)

    2.分析 (jhat jvisualvm mat jprofiler ... )

  4. 如何监控JVM

    jstat jvisualvm jprofiler arthas top...

标签:XX,调优,线程,内存,JVM,时间
来源: https://www.cnblogs.com/ZT-666/p/15811813.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有