JVM 問題排查分析下篇(案例實戰)

GC 問題排查實戰案例

這一部分,我們來看一個實際的案例。

假設我們有一個提供高併發請求的服務,系統使用 Spring Boot 框架,指標採集使用 MicroMeter,監控數據上報給 Datadog 服務。

當然,Micrometer支 持將數據上報給各種監控系統,例如:AppOptics、Atlas、Datadog、Dynatrace、Elastic、Ganglia、Graphite、Humio、Influx、Instana、JMX、KairosDB、New Relic、Prometh eus、SignalFx、Stackdriver、StatsD、Wavefront 等等。

有關MicroMeter的信息可參考:

https://micrometer.io/docs

問題現象描述

最近一段時間,通過監控指標發現,有一個服務節點的最大 GC 暫停時間經常會達到 400ms 以上。

如下圖所示:

85083641.png

從圖中可以看到,GC 暫停時間的峯值達到了 546ms,這裏展示的時間點是 2020 年 02 月 04 日 09:20:00 左右。

客戶表示這種情況必須解決,因爲服務調用的超時時間爲 1s,要求最大 GC 暫停時間不超過 200ms,平均暫停時間達到 100ms 以內,對客戶的交易策略產生了極大的影響。

CPU 負載