JVM GC配置指南 | 京东云技术团队
本文旨在简明扼要说明各回收器调优参数,如有疏漏欢迎指正。
1、JDK版本
以下所有优化全部基于JDK8版本,强烈建议低版本升级到JDK8,并尽可能使用update_191以后版本。
2、如何选择垃圾回收器
响应优先应用:面向C端对响应时间敏感的应用,堆内存8G以上建议选择G1,堆内存较小或低版本JDK选择CMS;
吞吐量优先应用:对响应时间不敏感,以高吞吐量为目标的应用(如MQ、Worker),建议选择ParallelGC;
3、各回收器优化参数
1)基本参数配置(所有应用、所有回收器都需要):
-Xmx(一般为容器内存的50%)
-Xms(与Xmx一致)
-XX:MetaspaceSize(通常256M~512M)
-XX:ParallelGCThreads=容器核数
-XX:CICompilerCount=容器核数(必须大于等于2)
2)ParallelGC
除以上参数外,一般不需要额外调优(JDK8默认回收器)
3)CMS
-XX:+UseConcMarkSweepGC
-Xmn (一般为堆内存的三分之一),尤其是配置了ParallelGCThreads后必须配置此参数
-XX:ConcGCThreads=n(默认为ParallelGCThreads/4,可视情况调整至ParallelGCThreads/2)
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70(推荐值)
4)G1
-XX:+UseG1GC
-XX:ConcGCThreads=n(默认为ParallelGCThreads/4,可视情况调整至ParallelGCThreads/2)
-XX:G1HeapRegionSize=8m(若堆内存在8G以内且有较多大对象推荐设置此值)
*注意不要设置-Xmn 和 XX:NewRatio
5)其他调优参数
-XX:+ParallelRefProcEnabled 如果GC时Reference处理时间较长,例如大量使用WeakReference对象,可以通过此参数开启并行处理
4、开启GC日志
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:/export/Logs/gc.log
5、如何判断GC是否正常
1)GC是否频繁:YoungGC频率一般几十秒钟一次,FullGC一般每天几次,注意G1回收器不应该出现FullGC;
2)GC耗时:耗时主要取决于堆内存大小及垃圾对象数量。YoungGC时间通常应在几十毫秒,FullGC通常在几百毫秒;
3)每次GC内存是否下降:应用刚启动时,每次YoungGC内存应该回收到较低水位,随着时间推移老年代逐步增多,内存水位会逐步上涨,直到FullGC/MixedGC(G1),内存会再次回到较低水位,否则可能存在内存泄漏;
4)如果使用ParallelGC,堆内存耗尽才会触发FullGC,所以不用配置堆内存使用率告警,但需关注GC频率;
5)泰山上可以巡检部分JVM配置。
作者:京东零售 王利辉
来源:京东云开发者社区

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
sharding-jdbc分库连接数优化 | 京东物流技术团队
一.背景: 配运平台组的快递订单履约中心(cp-eofc)及物流平台履约中心(jdl-uep-ofc)系统都使用了ShardingSphere生态的sharding-jdbc作为分库分表中间件, 整个集群采用只分库不分表的设计,共16个MYSQL实例,每个实例有32个库,集群共512个库. 当每增加一台客户端主机,一个MYSQl实例最少要增加32个连接(通常都会使用连接池,根据配置的最大连接数,这个连接数可能会放大5~10倍).并且通常一个系统都会分为web,provider,worker等多个应用,这些应用共用一套数据源.随着应用机器数的增加,MYSQL实例的连接数会很快达到上限,这就对系统的扩容造成了阻碍,无法横向的增加机器数,只能纵向的提高机器的配置来应对流量的增长. 作为京东物流的核心系统,业务增长迅速,系统所承接的流量也是逐渐增加,所以急需解决这个制约系统扩展的瓶颈点. 二.分库分表的相关概念介绍 2.1 为什么要分库分表 2.1.1 分库 随着业务的发展,单库中的数据量不断增加,数据库的QPS会越来越高,对数据库的读写耗时也会相应的增长,这时单库的读写性能必然会成为系统的瓶...
- 下一篇
多元融合:流媒体传输网络的全盘解法
我们在寻找「网络」的全盘解法。 音视频数字化在消费领域的红利俨然见顶,而产业级视频应用激活了更多场景下的业务模式。与此同时,音视频客户也从单一的业务需求,趋向于多种业务并行存在的需求。 固有的网络能满足新兴的业态吗?延时与成本之间存在区间最优解吗?业务的升级切换如何不再费时费力?在成本可控下网络的稳定性怎样保障? 一张多元融合的流媒体传输网络可否解决全盘之困? 面向未来的流媒体传输网络,又将从何揭开其神秘面纱? 本文由IMMENSE、「阿里云视频云」通讯服务负责人黄海宇和LiveVideoStack策划、采访而成。 网络新基建,若隐若现 降本还是网络最大痛点吗?“元数据”是新主角吗? 网络基础设施升级、音视频传输技术迭代、WebRTC开源等发展,音视频业务在消费互联网领域蓬勃发展,并逐渐向产业互联网领域加速渗透。 然而,行业红利期退却之后,以往隐蔽的音视频业务现象,逐渐显露。 一方面,“降本”是持续热议的话题。而在音视频应用中,网络传输在IT成本中占比很高,例如,在一个典型的直播应用中,网络传输成本占总成本70%以上。于是,在降本增效的大背景下,降低网络传输成本,是行业客户和云厂商共...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19