2017-03-09 78 views
0

在我每次重新部署應用程序時,都會保留舊的webclassloader,因爲存在由休眠啓動的稱爲Timer-0的阻塞線程。 我試着用YourKit分析堆轉儲,但仍有幾個thousend類仍在加載,我很難弄清楚什麼是阻塞類加載器。清除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

你如何做你的數據庫連接池? – Joe

回答

0

也許最好的辦法是前端有一個代理(Apache代理工作得很好)系統。您甚至可以在同一臺計算機上安裝兩個Tomcat實例,但在不同的端口上可以說7001和8001.假設您目前正在端口7001上運行,您將在8001上啓動新部署,然後將您的代理重新指定給8001.

相關問題