App下載

Java 垃圾收集日志添加的開銷

倚靠窗畔 2021-09-07 09:40:59 瀏覽數(shù) (2115)
反饋

在你的應(yīng)用程序上啟用垃圾收集日志具有一定的優(yōu)勢。簡而言之,垃圾收集日志將幫助你優(yōu)化垃圾收集暫停時間,提高整體應(yīng)用程序的響應(yīng)時間,預(yù)測生產(chǎn)中斷,降低計算成本。盡管垃圾收集日志具有這些優(yōu)勢,但我們不確定垃圾收集日志會給應(yīng)用程序增加什么開銷。因此,我們著手進行以下案例研究。

環(huán)境

對于我們的研究,我們選擇使用開源spring boot pet Clinic 應(yīng)用程序。Pet Clinic 是一個典型的應(yīng)用程序,旨在展示 spring boot 框架的功能。 

我們在 OpenJDK 11 中運行此應(yīng)用程序。我們將此應(yīng)用程序部署在 Amazon AWS t2.medium EC2 實例上,該實例具有 16GB RAM 和 2 個 CPU。測試是使用 Apache JMeter 壓力測試工具編排的。我們使用 AWS Cloudwatch 來衡量 CPU、內(nèi)存利用率。簡而言之,這里是我們用來進行此案例研究的工具/技術(shù):

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

測試場景

在這個環(huán)境中,我們進行了2個測試:

  1. 基線測試——在這個場景中,我們使用 JMeter 工具運行寵物診所應(yīng)用程序 20 分鐘,但沒有啟用垃圾收集 (GC) 日志,有 200 個并發(fā)用戶
  2. GC 日志啟用測試 –在此場景中,我們使用相同的 JMeter 腳本運行寵物診所應(yīng)用程序并啟用垃圾收集 (GC) 日志 20 分鐘,同時有 200 個并發(fā)用戶。 

注意:如果您不知道如何啟用 GC 日志,請參閱這篇文章:'如何啟用 GC 日志?'

檢測結(jié)果

我們從 AWS Cloudwatch 獲取平均 CPU 和內(nèi)存利用率,從 JMeter 工具獲取平均響應(yīng)時間和吞吐量。從這兩種情況收集的數(shù)據(jù)總結(jié)在下表中。

收集的數(shù)據(jù)基線 測試啟用 GC 測試
平均 CPU 使用率8.35%10.10%
平均內(nèi)存使用量20.80%20.50%
平均響應(yīng)時間3901 毫秒3881 毫秒
平均吞吐量24.4/秒24.5/秒

如您所見,CPU 和內(nèi)存消耗沒有明顯差異。同樣,平均響應(yīng)和事務(wù)吞吐量也沒有明顯差異。 

結(jié)論

因此,根據(jù)我們的研究,我們可以得出結(jié)論,啟用垃圾收集日志文件沒有明顯的開銷。鑒于我們通過啟用垃圾收集日志獲得的好處,您可以考慮在所有生產(chǎn)實例上啟用 GC 日志記錄。


0 人點贊