Metrics을 사용하여 jetty 8 서버에서 healthcheck 서블릿을 구현했습니다. Load Balancer에서 폴링되는 것 외에 메트릭은 정기적으로 (5 분) 로그 파일에 기록됩니다. 또한 CPU로드 또는 메모리 소비와 같은 일부 측정 항목이 중요한 제한에 도달하면 전자 메일 알림이 전송됩니다.Java 메모리 사용이 양호한 웹 응용 프로그램 Healthcheck 메트릭입니까?
이것은 CPU 메모리가 시스템 메모리를 소비하는 데 적합합니다. 그러나 서버가 안정적으로 실행되고 있지만 JVM 메모리 소비를 측정하기 위해 정의 된 메트릭 중 하나는 정의 된 임계 값 인 95 %를 정기적으로 초과합니다. 따라서 우리는이 특정 척도에 대한 우리의 결정을 재고해야 할 것입니다. 건강 검진에서 사용하는 것이 좋은 척도입니까? 가비지 컬렉터가 실행될 때까지 웹 응용 프로그램이 정기적으로 임계 값에 도달하거나 장기간 실행되는 모든 웹 응용 프로그램에 대해 예상되는 정상적인 동작 인 메모리 누수를 나타냅니다.
입력 해 주셔서 감사합니다.
다음은 JVM 메모리 상태 검사를 자극하는 코드입니다.
자바 런타임 메모리
private final Runtime runtime = Runtime.getRuntime();
Result check() throws Exception {
final long freeMem = this.runtime.freeMemory();
// maxMemory() is the value set by the JVM -Xmx (Max HeapSize) parameter
final long maxMem = this.runtime.maxMemory();
final long usedMem = maxMem - freeMem;
final double value = RatioGauge.Ratio.of(usedMem, maxMem).getValue();
final double threshold = 0.95;
if (value < threshold) {
// Everything OK: Memory usage usage is below the threshold.
} else {
// NOT OK: Memory usage is above the threshold.
}
}
이 수정 프로그램은 수락 된 답변의 주석에 포함되어 있습니다. – Chris2M