2012-02-22 4 views
2

현재 Tomcat 6에 Grails 응용 프로그램을 배포하는 데는 여러 가지 문제가 있습니다. 주로 메모리 사용 문제와 Jenkins를 통한 재배포 문제입니다.Tomcat에서 Jenkins를 사용하여 Grails 앱을 다시 배치하면 PermGen 공간이 채워집니다.

응용 프로그램이 점점 더 많은 메모리를 사용하고 CMSPermGenSweepingEnabled (우리는 UseConcMarkSweepGC 사용)로이를 해결하려고 했으므로 이제 Groovy에서 사용하는 임시 클래스를 정리해야합니다.

아직도 문제가되는 것은 각 재배포 (젠킨스 포함)에서 앱이 약 150Mb의 추가 Permgen 공간을 필요로한다는 것입니다. 어떤 생각을 어떻게 피할 수 있습니까? 우리는 성배 1.3.7, 우리의 현재 구성 플래그를 사용하는

은 심지어 몇 가지 권장 사항이, 그것은 매우 popular tomcat issue

-Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties 
-Djava.awt.headless=true 
-Xms2048M 
-Xmx2048M 
-XX:MaxPermSize=1024m 
-XX:PermSize=1024m 
-XX:+CMSClassUnloadingEnabled 
-XX:+CMSPermGenSweepingEnabled 
-XX:+UseConcMarkSweepGC 
-Djava.net.preferIPv4Stack=true 
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
-Djava.endorsed.dirs=/usr/share/tomcat6/endorsed 
-Dcatalina.base=/var/lib/tomcat6 
-Dcatalina.home=/usr/share/tomcat6 
-Djava.io.tmpdir=/tmp/tomcat6-tmp 
+0

우리는 PermGen 공간과 grails를 가지고 과거에도 생산상의 문제를 가지고있었습니다. 서버를 수신 거부하는 것은 확실히 해결책이지만, 그것이 궁극적으로 해결책인지는 모르겠다. –

답변

1

있습니다 http://wiki.apache.org/tomcat/OutOfMemory를하지만, 그건 대부분의 경우에만 작거나 완전히 제어 프로젝트에 대한 작업 ('외부 라이브러리가없는 프로젝트'를 의미 함). . 내가 본 모든 고체 프로젝트는

내 권고가이 오류 :(와 바람둥이 아래에 실패 -. 우리는 톰캣에 우리의 Grails를 응용 프로그램과 비슷한 문제를 경험 한 배포 한 후 톰캣 인스턴스를 다시 시작

0

우리의 솔루션과 동일 Igor이 제안한대로 배포 후 Tomcat을 다시 시작합니다.

두 개의 프로덕션 서버가 클러스터에 설치되어 세션을 공유하므로 하나의 서버를 다운 받아 응용 프로그램의 배포를 취소하고 Tomcat을 다시 시작하고 응용 프로그램의 새 버전을 배포 한 다음 서버를 다시 가져온 다음 다른 서버에서 프로세스를 반복하십시오. 지금까지이 작업이 우리를 위해 일하고 있습니다.

관련 문제