저는 TOP를 사용하여 Java 프로세스(Oracle Weblogic)를 모니터링해 왔으며 때때로 다음과 같은 일이 발생하는 것을 관찰했습니다.
- 한 시간 정도 지나면 RES는 일반적인 2,097,152KB에서 거의 10GB로 증가한 다음 0으로 떨어졌다가 2,097,152KB로 돌아갑니다.
- 이 기간 동안 VIRT 메모리는 6,904,832KB로 유지되었습니다.
- %MEM은 RES가 증가하면 증가하고 RES가 감소하면 계속 증가합니다(시스템에는 32GB RAM이 있음).
나는 RES, VIRT 및 %MEM에 대한 많은 설명을 읽었습니다.남성상의, 그중 어느 것에도 적합하지 않습니다. 특히 RES와 %MEM은 완벽하게 상관관계가 있어야 하며 RES는 결코 VIRT보다 높을 수 없다고 생각합니다.
무슨 일인지 설명해 줄 수 있는 사람 있나요?
시간이 지남에 따라 동작을 보여주는 그림을 아래에 추가했습니다.
관련된 것은 이것이 로드 밸런싱 시스템의 한 노드이고 다른 노드는 아무 일도 일어나지 않은 것처럼 계속된다는 것입니다. 저는 이런 일이 다른 날에 한 노드에서 6번 발생하는 것을 보았습니다. RES가 떨어지면 최종 사용자 응답 시간에 작고 짧은 스파이크가 발생합니다. 두 노드는 동일에 매우 가깝습니다. 관리자는 Java 프로세스에 다양한 메모리 플래그를 설정했습니다. Verbose GC가 켜져 있으며 다음 기간 동안 전체 GC가 발생하지 않습니다.