在你的應(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è)試:
- 基線測(cè)試——在這個(gè)場(chǎng)景中,我們使用 JMeter 工具運(yùn)行寵物診所應(yīng)用程序 20 分鐘,但沒有啟用垃圾收集 (GC) 日志,有 200 個(gè)并發(fā)用戶
- 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 日志記錄。