Java 垃圾收集日志添加的开销

倚靠窗畔 2021-09-07 09:40:59 浏览数 (2043)
反馈

在你的应用程序上启用垃圾收集日志具有一定的优势。简而言之,垃圾收集日志将帮助你优化垃圾收集暂停时间,提高整体应用程序的响应时间,预测生产中断,降低计算成本。尽管垃圾收集日志具有这些优势,但我们不确定垃圾收集日志会给应用程序增加什么开销。因此,我们着手进行以下案例研究。

环境

对于我们的研究,我们选择使用开源spring boot pet Clinic 应用程序。Pet Clinic 是一个典型的应用程序,旨在展示 spring boot 框架的功能。 

我们在 OpenJDK 11 中运行此应用程序。我们将此应用程序部署在 Amazon AWS t2.medium EC2 实例上,该实例具有 16GB RAM 和 2 个 CPU。测试是使用 Apache JMeter 压力测试工具编排的。我们使用 AWS Cloudwatch 来衡量 CPU、内存利用率。简而言之,这里是我们用来进行此案例研究的工具/技术:

  • OpenJDK 11
  • AWS EC2
  • AWS 云观察
  • Apache JMeter

测试场景

在这个环境中,我们进行了2个测试:

  1. 基线测试——在这个场景中,我们使用 JMeter 工具运行宠物诊所应用程序 20 分钟,但没有启用垃圾收集 (GC) 日志,有 200 个并发用户
  2. GC 日志启用测试 –在此场景中,我们使用相同的 JMeter 脚本运行宠物诊所应用程序并启用垃圾收集 (GC) 日志 20 分钟,同时有 200 个并发用户。 

注意:如果您不知道如何启用 GC 日志,请参阅这篇文章:'如何启用 GC 日志?'

检测结果

我们从 AWS Cloudwatch 获取平均 CPU 和内存利用率,从 JMeter 工具获取平均响应时间和吞吐量。从这两种情况收集的数据总结在下表中。

收集的数据基线 测试启用 GC 测试
平均 CPU 使用率8.35%10.10%
平均内存使用量20.80%20.50%
平均响应时间3901 毫秒3881 毫秒
平均吞吐量24.4/秒24.5/秒

如您所见,CPU 和内存消耗没有明显差异。同样,平均响应和事务吞吐量也没有明显差异。 

结论

因此,根据我们的研究,我们可以得出结论,启用垃圾收集日志文件没有明显的开销。鉴于我们通过启用垃圾收集日志获得的好处,您可以考虑在所有生产实例上启用 GC 日志记录。


0 人点赞