Tomcat上的战争部署需要很长时间

我有一个Grails应用程序,内置到war文件(~30mb)。 当我尝试通过应用程序管理器在Tomcat 6上部署war文件时,部署或无限期挂起需要10分钟。 当它挂起时我可以重新启动Tomcat并且通常会部署应用程序,但有时我必须重复此过程。 我还注意到在部署期间,Java进程最大化了CPU,RAM大约为10-15%。

我对Java很新,所以我不知道这是否正常,但我无法想象它是怎么回事。 有什么我可以做的让这个运行更顺畅/更快? 有没有比Tomcat的应用程序管理器更好的部署方式?

我将WAR上传到我的主目录,cd到/ usr / local / tomcat,然后运行以下命令:

bin/shutdown.sh rm webapps/ROOT.war rm -rf webapps/ROOT cp ~/ROOT.war webapps bin/startup.sh 

绝对检查Tomcat日志中是否有任何错误/警告。

您可能在其中一个ServletContextListener有一些昂贵/敏感的代码逻辑。 它们通常在启动期间初始化。 如果是这样,那么我会调试/分析它的任何性能问题/泄漏。

如上所述,我将战争复制到webapps文件夹并让tomcat进行部署,它也可以更快地节省您的时间。

Tomcat和Jetty都支持热部署。 它们只是监视deploy目录中的更改,因此您只需将.war文件复制到该目录中,服务器就会取消部署/重新部署。

如果使用远程服务器检查延迟不是通过网络将战争上载到远程服务器所花费的时间。

不要使用应用程序管理器。 我的方法是将它上传到webapps目录之外的某个地方,然后将其复制到webapps目录。 减少浪费时间。

并不总是您有足够的访问权限来手动将文件放在webapps文件夹中 – 您应该使用Tomcat应用程序管理器进行.war文件部署,并且需要使其工作。

对我来说,将.war文件上传到服务器的过程很常见; 它被卡在中间的某个地方,无论我重试多少次,文件只会部分上传到服务器。 在这种情况下,我发现尝试其他浏览器是值得的。 例如,我发现自己陷入了使用谷歌浏览器的困境,但是一旦我切换到刚刚启动的Firefox浏览器,事情就结束了。

这可能与JDK的这个BUG有关

我读到这篇文章,Tomcat7在Ubuntu 14.04 x64上启动太晚并解决了我的问题。

尝试通过在$ JAVA_PATH / jre / lib / security / java.security中用securerandom.source = file:/ dev /./ urandom 替换 securerandom.source = file:/ dev / urandom来解决它