2014-05-14 2 views
0

문제 설명 (비 힙) : 우리는 (CQ5에) 웹 응용 프로그램에서 다음과 같은 문제에 직면하고있다 :Java 프로세스 메모리 누수

시스템 구성의 세부 정보 : • 시스템 메모리 : 7기가바이트 • 의 -Xmx : 3.5 GB • XMS : MaxPermGen • 1 개의 GB : 최대 관찰 된 스레드없이 • 300메가바이트 : 620 XSS • (300 개 HTTP 요청에 속한 스레드 포함) : 기본

T 그는 ct5 java 프로세스 (서블릿 엔진을 실행 함)가 소비하는 메모리가 시간이 지남에 따라 계속 증가한다는 점을 지적합니다. 6 ~ 6.5GB를 초과하면 (시스템 메모리가 7GB에 도달) JVM이 응답하지 않습니다. (메모리가 부족하고 페이징 활동이 많아서). 그러나 힙과 퍼텐겐은 총 3.8GB (3.5 + 0.3) GB 이하로 유지됩니다. 이것은 힙이 아닌 메모리 (기본 메모리 + 스레드 스택 공간)가 몇 백개의 MB (CQ5 서버 재시작 후)에서 2-3GB (확장이 길면 4-5 시간이 지나면)까지 계속 증가한다는 것을 의미합니다. 우리의 목표는 기본적으로 타사 라이브러리, Java 코드의 간접 참조 등으로 인해 발생할 수있는 힙이 아닌 메모리에서 메모리 누수를 찾아내는 것입니다. 메모리 오류가 발생하지 않았습니다. 필요

도움말 :

  • 이제 우리는 우리에게 좋은 정보와 힙 메모리에 대한 세부 사항을 제공하는 데 사용되는 도구의 대부분. 그러나 우리는 네이티브 메모리에 대한 견해를 얻을 수 없습니다. 힙이 아닌 메모리 세부 정보 (오브젝트 레벨 또는 메모리 영역 레벨)를 모니터하는 방법에 대한 유용한 제안을 요청하십시오.
  • 응용 프로그램에서 유사한 문제 (힙이 아닌 메모리 누수)를 겪고 있고 힙이 아닌 메모리 누수를 해결하는 방법에 대해 알고 싶다면 에게 요청하십시오.
+1

[valgrind] (http://valgrind.org)는 귀하의 친구입니다. – maaartinus

+0

애플리케이션 프로파일 링 또는 JFR 사용 고려 : http://stackoverflow.com/questions/1207802/performance-cost-of-profiling-a-web-application-in-production/23377547#23377547 –

+0

캐시 구성 확인 - 런 어웨이 메모리 사용 누락 된 항목 무효화 호출 또는 과도한 TTL 일 수 있습니다. – Java42

답변

0

배포하는 코드, 사용중인 인프라, 실행중인 버전, 사용중인 응용 프로그램 서버 (있는 경우) 등 구체적인 구현에 따라 달라집니다.

그렇다면 CQ5.5 및 Image Servlet에서 메모리 누수 문제가 발생했습니다. 실제로 이미지 서블릿에 권한을 부여하는 Java 라이브러리 중 하나에서 메모리 누수가 발생합니다. Java 버전 업데이트로 해결되었지만 Image 서블릿 때문에 발생합니다. 일종의 긴 사안이라면 문제는 아니지만 언급 할만한 가치가있을 것입니다.

+0

감사합니다 ryanlunka. 우리는 이미 JPEGImage Servlet을 확인했지만 그게 문제가 아닙니다. 사실 힙에는 문제가 없습니다. Java 프로세스의 상주 메모리가 계속 증가하고 있습니다. – Apoorve

+0

프로세스 메모리 (heap, code cache 및 permgen 제외)를 프로파일 링하거나 분석하는 방법에 대해 알고 있습니까?나는 유닉스에서/proc/pid/smaps와/proc/pid/maps를 보았으나 충분한 세부 사항을 제시하지 못했다. – Apoorve