JVM参数及调优
调优基本概念
在调整性能时,JVM有三个组件:
- 堆大小调整
- 垃圾收集器调整
- JIT编译器
大多数调优选项与调整堆大小和为您的情况选择最合适的垃圾收集器有关。
JIT编译器对性能也有很大影响,但是很少需要使用较新版本的JVM进行调优。
通常,在调优JAVA应用程序是,重点是以下两个主要目标之一:
- 响应性:应用程序或系统对请求的数据进行响应的速度,对于专注于响应的应用程序,长的暂停时间是不可接受的,重点是在短时间内做出回应。
- 吞吐量:侧重于在特定时间段内最大化应用程序的工作量,对于专注于吞吐量的应用程序,高暂停时间是可接受的。由于高吞吐量应用程序在较长时间内专注于基准测试,因此不需要考虑快速响应的时间。
系统瓶颈核心还是在应用代码,一般情况下无需过多的调优,JVM本身在不断的优化。
常用的JVM参数
GC调优思路
- 分析场景 -例如:启动速度慢;偶尔出现响应慢于平均水平或者出现卡顿
- 确定目标 -内存占用,低延迟,吞吐量
- 收集日志 -通过参数配置收集GC日志;通过JDK工具查看GC状态
- 分析日志 -使用工具辅助分析日志,查看GC次数,GC时间
- 调整参数 -切换垃圾收集器或者调整垃圾收集器参数
通用GC参数
垃圾收集器Parallel 参数调优
垃圾收集器CMS参数调优
垃圾收集器G1参数调优
运行时JIT编译器优化参数
备注:很少需要对较新版本的JVM进行JIT调优
Tomcat 网络处理线程模型
BIO+同步Servlet
ARP+异步Servlet
NIO+异步Servlet
NIO处理流程
Tomcat 参数调优