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