2010-08-18 2 views
0

우리는 RHEL5.3에 Java1.5.0.16이 설치된 웹 로직 9.2 서버에 웹 서비스와 Alfresco 컨텐츠 관리 시스템을 배포합니다.기계 및 메모리의 모든 메모리 및 스왑이 끝날 때까지 RSS/VSS는 계속 증가하고 있습니다.

우리는 HP-UX i11.23에서 3 년 동안 잘 실행되었고 한 달 전에 Linux RH5.3으로 이동했으며 때때로 3 번 발생했습니다. 프로세스가 시작됨을 알게되었습니다. 기계의 모든 메모리와 스왑이 끝날 때까지 점점 더 많은 메모리를 사용하십시오.

프로세스가 여전히 정상적으로 작동하고 GC 로그를 포함하여 모든 로그 파일이 정상적으로 보입니다.

25450: /opt/java1.5.0_16/bin/java -Dweblogic.Name=dmcmsserver -Doracle.net.tns_admin=/etc -server -javaagent:/opt/MercuryDiagnostics/JavaAgent/DiagnosticsAgent/lib/probeagent.jar -Dprobe.id=supra2_afspr04_dmcms_ear_p4 -Dprobe.group=CMS_SERVER -Dpoints.file.name=/opt/MercuryDiagnostics/JavaAgent/DiagnosticsAgent/etc/supra2_afspr04_dmcms_ear_p4 -Dcom.wily.introscope.agent.agentName=DMCMS -Xms7g -Xmx7g -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=1792m -XX:MaxNewSize=1792m -XX:SurvivorRatio=4 -XX:TargetSurvivo 
00002ab0f8000000 10518548 rwx-- [anon] 
00002ab798009000 8388612 rwx-- [anon] 
000000005fcce000 8038976 rwx-- [anon] 
00002aac7aab0000 7602176 rwx-- [anon] 
00002aaf74000000 5259284 rwx-- [anon] 
00002ab688000000 4194308 rwx-- [anon] 
00002aae4b930000 1684124 rwx-- [anon] 
00002aab80000000 1314836 rwx-- [anon] 
00002aab20000000 655376 rwx-- [anon] 
00002aac28000000 532488 rwx-- [anon] 
00002aac50000000 524292 rwx-- [anon] 
00002aaaec000000 327696 rwx-- [anon] 
00002aaad8000000 131088 rwx-- [anon] 
00002ab658000000 131060 rwx-- [anon] 
00002ab0dc000000 131044 rwx-- [anon] 
00002aaacc2f5000 114708 rwx-- [anon] 
... 
total 69733292K 

사람이 비슷한 발생 유무 :

Glance for process ID 25450: 

B0000A Glance C.04.70.000 06:54:05 supra2 x86_64 Current Avg High 
CPU Util SU | 2% 2% 2% 
Disk Util D D | 97% 97% 97% 
Mem Util U U | 98% 98% 98% 
Swap Util U U | 60% 60% 60% 
Resources PID: 25450, java PPID: 25394 euid: 664 User:afspr04 
CPU Usage (util): 5.40 Total RSS : 40.6gb 
User CPU : 3.60 Text VSS : 56kb 
System CPU : 1.80 Data VSS : 66.1gb 
Priority : 15 Stack VSS : 2.0mb 
Nice Value : 0 Total VSS : 66.5gb 
Blocked On : SLEEP 
Major Faults : 235 
Minor Faults : 164 
Processor : 1 
Argv1: weblogic.Server 
Cmd : /opt/java1.5.0_16/bin/java -Dweblogic.Name=dmcmsserver -Doracle.net.tns_admin=/etc -server -javaagent:/opt/MercuryDiagn 
ostics/JavaAgent/DiagnosticsAgent/lib/probeagent.jar -Dprobe.id=supra2_afspr04_dmcms_ear_p4 -Dprobe.group=CMS_SERVER -D 
points.file.name=/opt/MercuryDiagnostics/JavaAgent/DiagnosticsAgent/etc/supra2_afspr04_dmcms_ear_p4 -Dcom.wily.introsco 
pe.agent.agentName=DMCMS -Xms7g -Xmx7g -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=1792m -XX:MaxNewSize=1792m -X 
X:SurvivorRatio=4 -XX:TargetSurvivorRatio=90 -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Xnoclassg 
c -Xloggc:logs/gc.log -Doracle.net.tns_admin=/etc -Dweblogic.Stderr=/app/afspr04/dmcms_ear_p4/dmcmsdomain/logs/online.l 
og -Dweblogic.Stdout=/app/afspr04/dmcms_ear_p4/dmcmsdomain/logs/online.log -Damdocs.system.home=/app/afspr04/dmcms_ear_ 
p4/properties/jesi -Damdocs.messageHandling.home=/app/afspr04/dmcms_ear_p4/properties/jesi -Djesi.config.loader=amdocs. 
ecommerce.esi.utils.config.InterfaceConfigXPathLoader -Damdocs.uams.config.resource=config/mvc/ldap ... 

의 pmap는 (한 번 큰으로 분류) 익명 에서 pmap로 큰 할당을 보여줍니다?

감사합니다, 오즈

답변

0

사용중인 서버의 CPU/RAM은 무엇입니까? RHEL compatibility matrix for WLS 9.2을 참조하여 JDK/CPU 구성이 지원되는 조합인지 확인해야합니다. 또한 JRockit을 JVM으로 고려할 수도 있습니다. 마지막으로 최대 힙 공간 (-Xmx 및 -Xms)을 낮추고 서버가보다 안정적인지 확인하십시오.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. CPU Intel (R) Xeon (R) E5540 @ 2.53GHz, RAM 48g, JDK 1.5.0.16 및 구성이 지원됩니다. HP-UX i에서 Linux로 전환 한 이래로 성능상의 이유로 앞으로 JRockit을 검토 할 것입니다. 감사합니다. Oz –

+0

64 비트 커널을 실행하고 있습니까? 그리고 JDK 1.5.0_22로 업그레이드를 시도 했습니까? – amer

+0

안녕하십니까, 옙 64 비트 및 우리는 havent 1.5.0.22 아직 오즈 –

0

다른 OS (Sun Solaris 10 - 32bit)에서는 동일한 종류의 문제가 발생하지만 일반적인 점은 Introscope입니다.

네이티브 라이브러리 (* .so는 JNI를 통해 액세스)를 사용하기 때문에 메모리를 너무 많이 할당한다고 생각됩니다 (메모리 누수?).

요점을 이해하려면이 경우 JVM 프로세스 메모리에 대해 알아야 할 것이 있습니다. Java 프로세스의 전체 메모리는 네이티브와 자바의 두 부분으로 나뉩니다.

가비지 콜렉터에서 관리하는 Java 부분의 메모리는 표준 JVM API를 통해 모니터 할 수 있습니다. 자바에서는 JVM 프로세스의 메모리 부분 만 모니터링 할 수 있다는 것을 기억하십시오. 여기에는 힙 (eden & 생존자 2 명), oldgen, permgen이 들어 있습니다. 메모리의이 부분은 대개 가장 큰 부분이므로 나머지 부분은 없지만이를 모니터링하는 방법이 있습니다.

나머지 프로세스 메모리, 기본 부분은 다릅니다. 이것은 네트워크 소켓/버퍼, 파일 디스크립터/버퍼, GC 실제 데이터 구조와 버퍼, 네이티브 라이브러리 버퍼, JIT 컴파일러에 의해 컴파일 된 네이티브 코드 및 기타 내부 JVM 특정 사항으로 구성됩니다. 또한 JVM 및 네이티브 라이브러리의 실행 가능 코드가 있습니다. 디버거를 사용하는 경우를 제외하고는 일반적으로이 부분을 볼 수있는 표준 방법이 없습니다.

C &에 요구 한 A는 와일리/인트로의 기본 lib 디렉토리에 대해, 그들은 우리에게 그 설명 :

  • 는 메모리를 동적으로 할당;
  • 메모리 소비를 제한 할 방법이 없습니다.
  • 메모리 소비를 예측할 방법이 없습니다.
  • Wily는 기본 시스템의 특정 조치 (예 :OS 플래그, CPU로드, 총 여유 메모리, 프로세스 수 등)를 표시합니다. Introscope는 Java Agent API를 사용합니다.

응용 프로그램의 99 %의 경우 메모리의 "기본"부분 (Java가 아닌 부분)은 Java 부분과 비교할 때 무시할 수 있습니다.

하지만 우리 게임에서 사용되는 Introscope를 사용하면 네이티브 부분이 임의로 커질 수 있고 프로세스의 메모리 공간을 최대 한도까지 먹을 수 있으므로 상황이 달라집니다.

우리는 여기서 시스템 특정 값은 우리에게별로 흥미롭지 않다는 결론을 내 렸습니다. 나는 mem, free, top, taskmanager, .. 등의 다른 방법이 있으므로 많은 사람들에게 그렇습니다. - 그래서 우리는 그것을 제거하기로 결정했습니다. 간단히.

나는 이것이 최선의 선택이라고 생각합니다.

메모리 문제가 해결되었는지 알려면 사용해보십시오.

관련 문제