2012-08-03 6 views
1

ColdFusion 서버에 문제가있어 JRE를 제대로 구성했습니다. 이 일을 해결하기 위해 Oracle JRockit을 설치하고 jvm.config를 전환하여 메모리 누수를 찾아 냈습니다.JRockit 콘솔 창이 열려있을 때 ColdFusion Java 힙이 완벽하게 작동하지만 JRockit 콘솔이 닫히면 메모리 사용량이 급증합니다.

일단 JRockit을 설치하면 서버가 이전보다 향상되었습니다. 우리는 며칠 동안 JRockit 프로그램과 콘솔을 열어 두었고 우리의 메모리 사용량은 200MB 미만이었습니다. 우리는 마침내 서버에서 프로그램을 닫았고 즉시 메모리 사용 문제가 반환되었습니다.

다음은 FusionReactor의 Java Heap을 보여주는 스크린 샷입니다. 여기 http://www.weblisters.com/icm/FusionReactorJavaHeap-JRockit-Console.png

우리 jvm.config 파일의 주요 설정은 다음과 같습니다 :이 오류가 발생했다

java.home=C:/Progra~2/Java/jrockit-jdk1.6.0_33-R28.2.4-4.1.0/jre 

java.args=-server -Xms1024m -Xmx1024m -Xgc:parallel -Dsun.io.useCanonCaches=false -Dcoldfusion.rootDir={application.home}/ -XX:+HeapDumpOnOutOfMemoryError -Xmanagement:ssl=false,authenticate=false,autodiscovery=true 

는 아직 충분한 명성 포인트를 가지고 있지 않기 때문에

내가 직접 여기를 게시 할 수 없습니다 우리가 Jrockit 콘솔을 닫은 직후 오류 : tsStartJavaThread (src/jvm/threads/vmthread/lifecycle.c : 1096)에서이 명령을 처리 할 수있는 저장 공간이 부족합니다.

Attempting to allocate 1G bytes There is insufficient native memory for the Java Runtime Environment to continue. 

사람이 가비지 컬렉션 (GC)를 열고 실행하는 JRockit 콘솔 창에 훨씬 더 잘 작동 것으로 보인다 이유를 알고 있나요? 우리는 그것을 영구적 인 해결책으로 공개 할 수는 없습니다.

+0

? 구문은 무엇입니까? –

+0

Jrocket이 java args를 선점하고 다른 설정으로 실행중인 것으로 의심됩니다. 오류는 하드웨어에 리소스가 제한되어 있음을 나타냅니다. 작동하려면 1GB * 연속 * 실제 메모리가 필요합니다. VM에서이 오류가 자주 발생합니다. –

+0

추가 조사를 통해 서버의 메모리 사용과 성능 향상이 JRockit 내부에서 메모리 누수 도구를 실행하고있는 것으로 보입니다. 우리는 사용자 인터페이스에서 Oracle JRockit Mission Control을 사용하고 있으며 실행중인 CF 인스턴스의 JVM을 마우스 오른쪽 버튼으로 클릭 한 다음 Start Memleak을 클릭합니다. memleak 테스트를하는 동안 우리의 메모리 사용량은 ~ 48MB로 떨어집니다. [우리가 memleak를 닫을 순간] (http://www.diigo.com/item/image/2u621/5k27). [Memleak 시작 후] (http : //www.diigo.com/item/image/2u621/nwbx) – billvsd

답변

0

나는 우리를 위해 일하는 해상도로 업데이트를 게시 할 것이라고 생각했습니다. 정확히 JRockit (특히 메모리 누수 테스트 중에)을 사용하는 동안 GC가 훨씬 더 잘 작동하는 것 같지 않지만 GC가 호출되는 빈도를 제어 할 수있게 해주는 JVM 시스템에 대한 설정을 발견했습니다. .

-Dsun.rmi.dgc.client.gcInterval=27000 -Dsun.rmi.dgc.server.gcInterval=27000 

이 두 설정은 우리가 구체적으로 자주 우리가 원하는만큼 자주 또는 GC를 호출 할 수 있도록, 우리는 기본 설정에서 변경 할 필요가 있었다. 우리는 또한 몇 가지 훌륭한 블로그 기사 (하단에 링크 됨)를 기반으로 전체 java.args 행을 업데이트했습니다. 다음과 같이 우리 서버를 실행해야하는 업데이트 된 java.args가 있습니다.

java.args= -server -DJINTEGRA_NATIVE_MODE -DJINTEGRA_PREFETCH_ENUMS -Xmx1024m -Xms1024m -XX:MaxPermSize=192m -XX:PermSize=192m -XX:+UseParallelGC -Dsun.rmi.dgc.client.gcInterval=27000 -Dsun.rmi.dgc.server.gcInterval=27000 -Dcoldfusion.rootDir={application.home}/ -Djava.compiler=NONE -Xnoagent -Xdebug 

블로그 기사 : 적부터 콘솔을 열 사용하여 명령을 무엇

Trunkful.com CF_GEMS How to Tune the JVM Part 1

Trunkful.com CF_GEMS How to Tune the JVM Part 2

관련 문제