Java 在Tomcat上使用Jenkins重新部署Grails应用程序填补了PermGen的空间

Java 在Tomcat上使用Jenkins重新部署Grails应用程序填补了PermGen的空间,java,tomcat,grails,memory-management,permgen,Java,Tomcat,Grails,Memory Management,Permgen,目前,我们在Tomcat6上部署Grails应用程序时遇到了各种问题,主要是内存使用问题和通过Jenkins重新部署的问题 应用程序占用了越来越多的内存,我们试图用CMG解决这个问题(我们使用的是UseConcMarkSweepGC),所以现在Groovy使用的临时类应该清理干净了 还有一个问题是,每次重新部署(使用jenkins)时,应用程序都需要大约150MB的额外Permgen空间。。。你知道如何避免这种情况吗 我们使用的是Grail1.3.7,当前的配置标志是 -Djava.util.l

目前,我们在Tomcat6上部署Grails应用程序时遇到了各种问题,主要是内存使用问题和通过Jenkins重新部署的问题

应用程序占用了越来越多的内存,我们试图用CMG解决这个问题(我们使用的是UseConcMarkSweepGC),所以现在Groovy使用的临时类应该清理干净了

还有一个问题是,每次重新部署(使用jenkins)时,应用程序都需要大约150MB的额外Permgen空间。。。你知道如何避免这种情况吗

我们使用的是Grail1.3.7,当前的配置标志是

-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
这是非常好的,他们甚至有一些建议:,但在大多数情况下,它只适用于小型或完全受控的项目(意思是“没有任何外部库的项目”)。我见过的所有solid项目都在tomcat下失败,错误如下:(


我的建议-在部署后重新启动Tomcat实例。

我们在Tomcat上的Grails应用程序也遇到了类似的问题。我们的解决方案与Igor建议的相同,即在部署后重新启动Tomcat


我们在一个集群中安装了两台生产服务器,以便它们共享会话。我们关闭一台服务器,取消部署应用程序,重新启动tomcat,部署新版本的应用程序,然后将该服务器恢复。然后在另一台服务器上重复此过程。到目前为止,这对我们来说是可行的。

我们已经遇到了生产问题,其中包括PermGen空间和grails在过去也是如此。跳转服务器肯定是一个解决方案,尽管我不知道它最终会是一个解决方案。