2013-11-09 3 views
0

가상 머신 :가 클수록 JVM 메모리 및 스왑

4CPU 10기가바이트 RAM 10 기가 바이트 스왑

자바 1.7 -Xms = -Xmx = 6,144m

톰캣 7

우리는 매우를 관찰 JVM에서의 이상한 동작. JVm 상주 메모리가 줄어들 기 시작하여 스왑 사용량이 최대 50 %까지 증가했습니다.

아래의 모니터링 도구 통계를 참조하십시오.

http://i44.tinypic.com/206n6sp.jpg http://i44.tinypic.com/m99hl0.jpg

모든 포인터는이 감사 이해합니다.

감사합니다.

+0

저는 이것이 리눅스 시스템 관리 질문에 더 가깝기 때문에 아마도 여기서는 아니고 Server Fault에 속할 것이라고 생각합니다. 그러나 그래프에 나타나지 않는 다른 프로세스가 있다고 생각합니다. 모든 프로세스를 보려면'top'을 사용하고 메모리 사용법에 따라 정렬하려면'M'을 누르십시오. –

답변

0

Java 프로그램이 유휴 상태 였고 메모리가 필요하지 않았지만 swappiness가 높았습니까? 이런 경우 OS가 RAM을 무료로 사용하고 사용 된 부분 만 남겨 두게됩니다.

제 의견으로는 실제로 좋은 행동입니다. 왜 사용하지 않는 프로세스에서 RAM을 낭비해야합니까?

VM에서이 프로세스 만 실행하지 않는 한 swappiness를 0 또는 다른 작은 수로 설정하는 것이 좋습니다.이 메모리가이 단일 프로세스에 제공되었으므로 스와핑을 비활성화 할 수 있습니다.

0

응답 해 주셔서 감사합니다. 예, 이것은 Java보다 시스템 문제 해결에 가깝지만, JVM을 통해 이러한 현상을 본 사람이 있으면이 주제를 시작할 수있는 적절한 포럼이라고 생각했습니다.

어쨌든, 나는 이미 정상을 확인했고, 메모리가 부족한 자바 이외의 다른 프로세스는 없었습니다. 실제로 두 번째 최상위 프로세스는 72MB (RSS)를 사용했습니다.

이 시스템에서는 swappiness가 적극적으로 설정되지 않지만 기본값은 60입니다. 공유하지 못한 추가 정보 중 하나는 클러스터에 4 개의 응용 프로그램 서버가 있으며 모두가이 동작을 정확하게 동시에 보여주었습니다. AFAIK, JVM은 바뀌지 않지만 OS는 바뀝니다. 그러나 그것 모두가 나를 혼란스럽게합니다.

이러한 모든 앱 서버는 프로덕션 및 사용량이 많은 서비스이므로 유휴 상태가 아닙니다. 사용 된 힙 크기는 6GB의 평균 5GB입니다.

다른 흥미로운 점은 내가 조사하고있는 동시에 Vmware 로그에서 실패한 일부 메시지였습니다.