2017-03-09 10 views
0

현재 애플리케이션을 다시 배포 할 때마다 최대 절전 모드로 시작되는 Timer-0이라는 차단 스레드 때문에 이전 webclassloader가 유지됩니다. YourKit으로 힙 덤프를 분석하려고했지만 몇 가지 클래스가 여전히로드되어있어 클래스 로더를 차단하는 것이 무엇인지 파악하기가 어렵습니다.Tomcat에서 Grails 애플리케이션의 배포 해제를 깨끗하게 처리

이 몇 가지 질문으로 나를 잎 :

  • 어떻게 클래스 로더가 언로드 할 수 없습니다 이유를 찾는 방법은?

  • 컨테이너를 다시 시작하지 않고 모든 것이 언로드되었는지 확인하는 것이 가장 좋습니다.

미리 감사드립니다.

UPDATE

샘플 데이터 소스 :

dataSource { 
    pooled = true 
    driverClassName = "org.postgresql.Driver" 
    dialect = "org.hibernate.dialect.PostgreSQLDialect" 
    username = "xx" 
    password = "xx" 
    configClass = DdlFilterConfiguration 
    properties { 
     maxActive = 250 
     maxIdle = 25 
     minIdle = 1 
     initialSize = 10 
     maxWait = 10000 
     validationQuery = "select 1 " 
     validationQueryTimeout = 3 
     validationInterval = 15000 
     testOnReturn = true 
     testWhileIdle = true 
     testOnBorrow = true 

     minEvictableIdleTimeMillis = 60000 
     timeBetweenEvictionRunsMillis = 5000 
    } 
} 
+0

아니요 , 컨테이너를 다시 시작하십시오. :/ –

+0

Tomcat 7과 Grails를 사용하여 성공적인 병렬 배포를 수행했습니다. 다운 타임없이 재배포하는 것과 같습니다. – Joe

+0

DB 연결 풀은 어떻게 지내십니까? – Joe

답변

0

는 아마 가장 좋은 방법은 프록시 (아파치 프록시 잘 작동)으로 시스템을 종료 앞이다. 동일한 시스템에서도 두 개의 Tomcat 인스턴스를 가질 수 있지만 다른 포트에서는 7001과 8001을 사용할 수 있습니다. 현재 포트 7001에서 실행 중이며 8001에서 새 배치를 시작한 다음 프록시를 8001로 다시 지정할 수 있습니다.