App下載

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

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

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

環(huán)境

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

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

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

測(cè)試場(chǎng)景

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

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

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

檢測(cè)結(jié)果

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

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

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

結(jié)論

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


0 人點(diǎn)贊