Skip to content

Java GC — алерт по росту pause-time

Spring-приложение тормозит — long GC pauses (>500ms) каждые несколько минут. Heap-size был ок, но new-gen неправильно настроен. Нужен endpoint с p99 pause.

Рецепт

bash
#!/usr/bin/env bash
# Spring Boot 2.4+ — Actuator exposes JVM metrics out of the box.
# Returns p99 pause in ms; "high" when over threshold.
ACTUATOR="${ACTUATOR:-http://localhost:8080/actuator/metrics/jvm.gc.pause}"
THRESHOLD_MS="${GC_THRESHOLD_MS:-500}"

P99=$(curl -s "$ACTUATOR" | python3 -c '
import json, sys
try:
    data = json.load(sys.stdin)
    val = next((m["value"] for m in data["measurements"] if m["statistic"] == "MAX"), 0)
    print(int(round(val * 1000)))
except Exception:
    print("0")
')
[ -z "$P99" ] && { echo "no-data"; exit 1; }
[ "$P99" -ge "$THRESHOLD_MS" ] && echo "high $P99" || echo "ok $P99"

То же самое в Enterno.io

Поднимите endpoint и Enterno HTTP-монитор с keyword "ok". Корреляция со PageSpeed-монитором страницы покажет — это GC лагает или upstream-API.

Настроить HTTP monitor → ← Все рецепты

Похожие рецепты

Node-приложение тормозит из-за блокирующих CPU-операций; latency пользователей растёт. Нужен endpoint с моментальным значением event-loop-lag.