tomcat - 在 Tomcat 中完全取消部署 Grails 应用程序

标签 tomcat grails profiling classloader

目前,每次我重新部署应用程序时,旧的 webclassloader 都会被保留,因为我认为这是一个名为 Timer-0 的阻塞线程,它是由 hibernate 启动的。 我尝试使用 YourKit 分析堆转储,但仍然加载了数以千计的类,我很难找出是什么阻止了类加载器。

这留给我几个问题:

  • 如何查找类加载器无法卸载的原因?

  • 是否有最佳实践来确保在不重启容器的情况下完全卸载所有内容?

提前致谢!

更新

示例数据源:

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
    }
}

最佳答案

最好的方法可能是使用代理作为系统前端(Apache 代理运行良好)。你甚至可以在同一台机器上有两个 Tomcat 实例,但在不同的端口上,假设 7001 和 8001。假设你当前正在端口 7001 上运行,你在 8001 上开始新部署,然后将你的代理重新指向 8001。

关于tomcat - 在 Tomcat 中完全取消部署 Grails 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42696292/

相关文章:

java - 是否可以在 Tomcat 中动态重新加载 log4j.xml/log4j.properties 文件?

grails - Grails注销按钮不起作用

hibernate - Grails 升级到 3.3.x : Cannot access persistentEntity. relationshipMap 和 persistentEntity.hasOneMap with grails 3.3.5

r - 从 Rprof() 获取更多信息

linux - 在 Kcachegrind 中打开 perf.data

tomcat - 什么是 Tomcat 等同于这些 WebLogic 设置

java - 重定向后 Tomcat 不应用过滤器(转发?)

Apache:如何在 Apache/mod_proxy 中设置并发转发请求数的上限?

mysql - Grails:如何在加密列中搜索关键字并获取行

Java 分析 : View binary hprof cpu sampling dumps