2011-12-13 2 views
0

안녕하세요 저는 6 응용 프로그램 서버 균형 Java 응용 프로그램에서 일하고 있어요. 그리고 하루에 1-2 응용 프로그램 서버 주위에 1, 그들 중 하나에서 임의의 전체 gc (응용 프로그램에서 시간 제한을 일으키는) 있어요.jboss java random 전체 GC 동결 응용 프로그램

GC.log

...

2011-12-13T10:38:36.576+0100: 79825.032: [GC [PSYoungGen: 874833K->66144K(1071936K)] 3516152K->2809316K(3868160K), 0.2535770 secs] [Times: user=0.94 sys=0.00, real=0.25 secs] 
2011-12-13T10:38:36.830+0100: 79825.286: [Full GC [PSYoungGen: 66144K->0K(1071936K)] [ParOldGen: 2743171K->2753089K(2796224K)] 2809316K->2753089K(3868160K) [PSPermGen: 283256K->269894K(524288K)], 7.3616280 secs] [Times: user=25.14 sys=0.00, real=7.36 secs] 
2011-12-13T10:38:46.152+0100: 79834.608: [Full GC [PSYoungGen: 752192K->0K(1071936K)] [ParOldGen: 2753089K->2751441K(2796224K)] 3505281K->2751441K(3868160K) [PSPermGen: 270340K->269781K(524288K)], 6.6231180 secs] [Times: user=22.52 sys=0.01, real=6.62 secs] 
2011-12-13T10:38:54.591+0100: 79843.047: [Full GC [PSYoungGen: 752192K->0K(1071936K)] [ParOldGen: 2751441K->2719651K(2796224K)] 3503633K->2719651K(3868160K) [PSPermGen: 270670K->269784K(524288K)], 5.5780510 secs] [Times: user=19.75 sys=0.01, real=5.58 secs] 

...

내 실제로는 제이 보스 죽이고 그 (안 좋은 솔루션)를 다시 시작있어 해결.

이 내 시스템의 conf입니다 :

Mem: 6 Gb 
Intel(R) Xeon(R) CPU   L5640 @ 2.27GHz (4 core) 
java version "1.6.0_26" 
Scientific Linux release 6.0 (Carbon) 
jboss-4.0.5.GA 

제이 보스 매개 변수 :

-Xms4G 
-Xmx4G 
-Dsun.rmi.dgc.client.gcInterval=3600000 
-Dsun.rmi.dgc.server.gcInterval=3600000 
-verbose:gc 
-XX:+PrintGCDetails 
-XX:+PrintGCDateStamps 
-XX:PermSize=512m 
-XX:MaxPermSize=512m 
-XX:+CMSClassUnloadingEnabled 
-XX:+UseCompressedOops 
-XX:+DisableExplicitGC 
-XX:+UseParallelOldGC 
-XX:ParallelGCThreads=4 
-XX:+UseAdaptiveSizePolicy 
-XX:+AggressiveOpts 
-Xdebug 

누구든지 pls는 저에게 도와 드릴까요? 감사합니다

+0

Java 7을 사용해 볼 수 있습니까? 그것은 GC와 함께 더 원활하게 작동합니다. – stivlo

+0

Java 7에서 실행하는 것을 권장하지 않습니다. Jboss 버전은 너무 오래되었습니다 ... Java 7이 대부분 지원되지 않는 것처럼, Java 6이 jboss 4.0과 함께 지원되는지 궁금합니다. 5 –

+0

제작이 아니기 때문에 그럴 수 없습니다. – astral00

답변

0

적응 크기 조정 정책을 사용해 보셨습니까? -XX : + UseAdaptiveSizePolicy and -XX : MaxGCPauseMilis = 100 and -XX : GCTimeRatio = 19?

그렇다면 동시 마크 스윕 컬렉터 (-XX : UseConcMarkSweepGC)가 도움이되지 않는다면?

"JVM 성능 튜닝 @ 트위터"(slides, video)라는 제목의 프리젠 테이션을 한 번 보면서 GC를 선택하는 경우의 장단점을 설명합니다.

+0

나는 이것을 시도 할 것이다, tnx. – astral00

+0

이렇게하면 -Xms가 -Xmx와 같지 않도록 -Xms를 변경해야합니다. 따라서 VM의 인체 공학이 비활성화됩니다. – Erik

0

여기에 응용 프로그램을 프로파일 링해야한다고 생각합니다. 다른 선택 사항이 없습니다. 클러스터가 없어도 full-GC가 고정됩니까? 다른 GarbageCollector로 실행하려고 할 수는 있지만 이러한 동작의 원인은 응용 프로그램의 어딘가에 메모리 누수가 있거나 메모리 소비 측면에서 "의심스러운 잘못된"개체 처리 일 것입니다.

당신이 할 수있는 또 다른 일은 하루 동안 힙 덤프를 생성하고 문제를 지적 할 수있는 차이가 있는지 확인하는 것입니다.

현재, 64 비트 자바와 jboss가 맞습니까? :) 32 비트 응용 프로그램의 경우 동일한 프로세스에서 4GB 메모리를 처리하는 데 조금 문제가 있습니다 ...

+0

네 64 비트예요. – astral00

+0

전체 gc는 항상 어느 시점에서 응용 프로그램을 중지합니다. 문제는 응용 프로그램이 중지 된 시간입니다. – Erik