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

时间:2009-11-24 14:38:24

标签: java deployment tomcat

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

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

6 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

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

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

如果使用远程服务器,请检查滞后时间不是通过网络将战争上传到远程服务器的时间。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

这可能与此BUG of JDK

有关

我恳求this article, Tomcat7 starts too late on Ubuntu 14.04 x64并解决了我的问题。

尝试通过替换 securerandom.source =文件来解决它:/ dev / urandom with securerandom.source = file:/ dev /./ urandom in $ JAVA_PATH / jre / lib / security / java 。安全