热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JVM调优实战之三种垃圾收集器组合性能比较(GCEasy日志分析)

指标参数机器8C16G操作系统LinuxWEB服务器Tomcat首先我们根据Java Performance推荐公式配置最优GC参数 Xmx和Xms设置为老年代存活对象的3-4倍,即F
指标参数
机器8C16G
操作系统Linux
WEB服务器Tomcat

首先我们根据Java Performance推荐公式配置最优GC参数
performance.png
Xmx和Xms设置为老年代存活对象的3-4倍,即Full GC之后老年代内存占用的3-4倍
永久代(元空间)设置为老年代存活对象的1.2-1.5倍
Xmn设置为老年代存活对象的1-1.5倍
老年代内存大小设置为老年代存活对象的2-3倍
image.png
经过测试发现Full GC后老年代内存占用为136m左右,所以设置Xms和Xmx为512m,Xmn设置为192m

吞吐量优先

GC参数设置

#初始堆大小/最大堆大小/新生代大小/元空间大小/元空间最大允许大小/线程栈大小
-Xms512m -Xmx512m -Xmn192m -XX:MetaspaceSize=192m -XX:MaxMetaspaceSize=320m -Xss512k
#垃圾回收器(ps和po)
-XX:+UseParallelGC -XX:+UseParallelOldGC
#统计GC信息
-XX:PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:${BASE_DIR}/logs/gc-ps-po.log

查看JVM参数信息:jmap -heap pid
image.png

压测接口

线程组配置1600*5000
image.png
花费共29min13s

吞吐量

image.png
平均吞吐量为4564.6

RT

image.png
平均响应时间为348ms

TPS

image.png

GC统计信息

grafana+prometheus监控图
image.png
GC Easy进行gc日志分析
image.png
image.png
image.png
image.png

堆内存统计信息

image.png
image.png
image.png

结果分析

GC总耗时:63.326s
Young GC总耗时:61.246s
Full GC总耗时:2.080s
最大GC停顿时间:210ms

响应时间优先

GC参数设置

#初始堆大小/最大堆大小/新生代大小/元空间大小/元空间最大允许大小/线程栈大小
-Xms512m -Xmx512m -Xmn192m -XX:MetaspaceSize=192m -XX:MaxMetaspaceSize=320m -Xss512k
#垃圾回收器(ParNew和CMS)
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC
#统计GC信息
-XX:PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:${BASE_DIR}/logs/gc-parnew-cms.log

查看JVM参数信息:jmap -heap pid
image.png

压测接口

线程组配置1600*5000
image.png
花费共30min22s

吞吐量

image.png
平均吞吐量为4392.0

RT

image.png
平均响应时间为361ms

TPS

image.png

GC统计信息

grafana+prometheus监控图
image.png
GC Easy进行GC日志分析
image.png
image.png
image.png
image.png
image.png

堆内存统计信息

image.png
image.png
image.png

结果分析

GC总耗时:55.627s
Young GC总耗时:55.627s
Full GC总耗时:0s
最大GC停顿时间:90ms

全功能垃圾收集器

GC参数设置

#初始堆大小/最大堆大小/元空间大小/线程栈大小
-Xms2048m -Xmx2048m -XX:MetaspaceSize=128m -Xss512k
#垃圾回收器(G1)/期望最大停顿时间
-XX:+UseG1GC -XX:MaxGCPauseMillis=80
#统计GC信息
-XX:PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:${BASE_DIR}/logs/gc-g1.log

查看JVM参数信息:jmap -heap pid
image.png

压测接口

线程组配置1600*5000
image.png
花费共27min37s

吞吐量

image.png
平均吞吐量为4828.7

RT

image.png
平均响应时间为329ms

TPS

image.png

GC统计信息

grafana+prometheus监控图
image.png
GC Easy进行GC日志分析
image.png
image.png
image.png
image.png

堆内存统计信息

image.png
image.png
image.png

结果分析

GC总耗时:14.630s
最大GC停顿时间:80ms

结论
指标吞吐量TPS/s响应时间(ms)GC总耗时(s)最大GC停顿时间(ms)
吞吐量优先98.134%4564.634863.326210
响应时间优先97.112%4392.036155.62790
全功能99.138%4828.732914.63080

在低延时接口下,三者对比性能其实没有很大差别,但相对来说,使用G1垃圾回收器性能明显会更优于其他两种策略,但是G1适用于堆内存较大的场景,我们还是需要具体场景具体分析


推荐阅读
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
author-avatar
沙尘jr暴的天下
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有