GC日志分析工具-GCeasy解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 一款新的GC日志分析仪器,业界首个基于人工智能机器学习指导的垃圾收集日志分析工具。 GCeasy具有内置的智能功能,可以自动检测JVM和Android GC日志中的问题并为之推荐解决方案。

      一款新的GC日志分析仪器,业界首个基于人工智能机器学习指导的垃圾收集日志分析工具。 GCeasy具有内置的智能功能,可以自动检测JVM和Android GC日志中的问题并为之推荐解决方案。其具有以下特征:

       1、能够在数秒内解决Java虚拟机内存和GC问题

       2、能够给予JVM Heap设置建议

       3、基于机器学习算法

       基于GCeasy工具,我们可以达到如下效果:

       1、解决内存泄漏问题

      GCeasy的高级机器学习算法节省了处理神秘的GC日志的时间和麻烦。我们可以快速检测内存泄漏,长时间的GC暂停,过早的对象升级以及许多其他影响性能的问题。

       2、在几秒钟内调整Java GC设置

      强大的工具,可调整应用程序的内存和GC设置。该报告的“关键绩效指标”和“ GC统计数据”部分可帮助我们进行优化指导。

       3、惊人的内存可视化器

      视觉始于可视化,GCeasy日志分析报告中能够丰富地显示行业专家对此应用场景下Java内存建模的建议或观点。

      作为一种通用型Java GC查看/分析器,其几乎支持所有的垃圾回收策略,包括串行GC、并行GC、CMS GC、G1 GC、ZGC以及其他等等。覆盖了Oracle、IBM、HP、Azul、OpenJDK以及其他等JVM提供商并支持所有的JDK版本,从最初的1.2到现在的15。不仅如此,GCeasy还支持统一GC日志记录格式,能够支撑可运行Java应用的所有平台环境,可以认为是一款全能型Java虚拟机垃圾回收日志分析工具。

      除此之外,GCeasy根据我们所传递的GC算法、Java版本、JVM提供程序和内存参数,其可以灵活地展现不同场景下的GC日志格式,方便不同人群的视觉需求,让大家更容易理解。GCeasy是业界第一台在线GC日志分析器,可以支撑分析任何格式的GC日志,并且,我们可借助其所开放的RESTful API来分析垃圾收集日志。

       以下为此工具的相关分析效果视图:

  •  Java内存大小信息

  •  关键评价指标

  • 交互图

                                                       

  •  G1 收集阶段统计

  •  GC原因

  •  命令行标志

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/wsm-admin/gc.log -XX:InitialH
  •   推荐建议

      此处主要包含2部分内容,GC日志解析以及给予的解决策略,以下为简要参考:

    (1)现象分析:

      GC暂停时间的14.68%(即5秒59毫秒)是由“ G1巨大分配”事件触发的。大量分配是大于G1中区域大小的50%的分配。频繁的大量分配会导致几个性能问题:

       1、如果区域包含巨大物体,则该区域中最后一个巨大物体与区域末端之间的空间将不被使用。如果有多个这样的庞大对象,那么这个未使用的空间可能导致堆变得碎片化。

       2、在Java 1.8 u40之前,仅在完全GC事件期间才完成大型区域的回收。与在更新的JVM中一样,清除大型对象是在清理阶段完成的。

       解决方案:

      增加G1区域的大小,以使分配不会超过50%的限制。默认情况下,区域大小是在启动期间根据堆大小计算的。可以通过指定"-XX:G1HeapRegionSize"参数属性来覆盖它。区域大小必须介于1到32兆字节之间,并且必须是2的幂。

      注意:增加区域大小是敏感的调整,因为它将减少区域数。因此,在增加新区域的大小之前,请进行彻底的测试。

    (2现象分析

       "疏散失败"事件触发了11.4%的GC暂停时间(即3秒953毫秒)。如果没有更多的空闲区域可以升级到老一代或复制到幸存者空间,并且由于堆已经处于最大状态而无法扩展,则会发生疏散失败。对于G1 GC,疏散失败需要花费较高的代价。

       解决方案

       1、过度调整可能会导致疏散失败。因此,请消除所有与内存相关的属性,并仅保留最小和最大堆以及实际的暂停时间目标(即,仅使用-Xms、-Xmx和暂停时间目标-XX:MaxGCPauseMillis)。删除所有其他堆大小,例如-Xmn、-XX:NewSize、-XX:MaxNewSize、-XX:SurvivorRatio等。

       2、如果问题仍然存在,增加JVM堆大小(即-Xmx)。

       3、如果无法增加堆大小,并且如果注意到标记周期还没有开始到足够早的时间来收回旧的一代,则减少参数"-XX:InitiatingHeapOccupancyPercent"。默认值为45%。减小该值将更早开始标记循环。另一方面,如果标记周期较早开始而不是回收,则将"-XX:InitiatingHeapOccupancyPercent"参数阈值提高到默认值以上。

      4、可以增加"-XX:ConcGCThreads"参数的值以增加并行标记线程的数量。增加并发标记线程将使垃圾回收运行更快。

      5、增加"-XX:G1ReservePercent"参数的值。默认值为10%。这意味着G1垃圾收集器将尝试始终保持10%的可用内存。当您尝试增加此值时,GC将更早触发,以防止撤离暂停。            注意:G1 GC将此值的上限限制为50%。

    (3现象分析

      元数据GC阈值事件触发了GC暂停时间的0.19%(即63.9 ms)。在两种情况下会触发此类GC事件:

       1、配置的元空间大小太小,无法满足实际需求

       2、存在类加载器泄漏(极不可能,但可能)。

      解决方案

     可以考虑将"-XX:MetaspaceSize"设置为更高的值。如果此属性尚不存在,请对其进行配置。将"-XX:MetaspaceSize"设置为较高的值将降低“元数据GC阈值”的频率。如果仍然看到报告“元数据GC阈值”事件,则需要从应用程序中捕获堆转储并进行分析。

      借助此文章,我们可以学习如何进行堆转储分析。如果我们的应用正在Java 8 update 20及更高版本上运行,则可以考虑将"-XX:+ UseStringDeduplication"参数配置到应用程序中。它将帮我们删除应用程序中的重复字符串,并有可能提高整个应用程序的性能。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
50 8
|
1月前
|
监控 安全 网络安全
使用EventLog Analyzer日志分析工具监测 Windows Server 安全威胁
Windows服务器面临多重威胁,包括勒索软件、DoS攻击、内部威胁、恶意软件感染、网络钓鱼、暴力破解、漏洞利用、Web应用攻击及配置错误等。这些威胁严重威胁服务器安全与业务连续性。EventLog Analyzer通过日志管理和威胁分析,有效检测并应对上述威胁,提升服务器安全性,确保服务稳定运行。
|
1月前
|
安全 程序员 API
|
1月前
|
自然语言处理 并行计算 数据可视化
免费开源法律文档比对工具:技术解析与应用
这款免费开源的法律文档比对工具,利用先进的文本分析和自然语言处理技术,实现高效、精准的文档比对。核心功能包括文本差异检测、多格式支持、语义分析、批量处理及用户友好的可视化界面,广泛适用于法律行业的各类场景。
|
1月前
|
运维 Prometheus 监控
特定用途的日志分析工具
【10月更文挑战第20天】
70 5
|
1月前
|
存储 机器学习/深度学习 传感器
商业日志分析工具
【10月更文挑战第20天】
57 5
|
1月前
|
存储 运维 监控
开源日志分析工具
【10月更文挑战第20天】
95 3
|
1月前
|
存储 监控 Java
JVM进阶调优系列(8)如何手把手,逐行教她看懂GC日志?| IT男的专属浪漫
本文介绍了如何通过JVM参数打印GC日志,并通过示例代码展示了频繁YGC和FGC的场景。文章首先讲解了常见的GC日志参数,如`-XX:+PrintGCDetails`、`-XX:+PrintGCDateStamps`等,然后通过具体的JVM参数和代码示例,模拟了不同内存分配情况下的GC行为。最后,详细解析了GC日志的内容,帮助读者理解GC的执行过程和GC处理机制。
|
2月前
|
存储 前端开发 JavaScript
前端模块化打包工具的深度解析
【10月更文挑战第13天】前端模块化打包工具的深度解析
|
2月前
|
JSON JavaScript 前端开发
深入解析ESLint配置:从入门到精通的全方位指南,精细调优你的代码质量保障工具
深入解析ESLint配置:从入门到精通的全方位指南,精细调优你的代码质量保障工具
103 0

推荐镜像

更多