我有一个Grails应用程序,内置于war文件(~30mb)。当我尝试通过应用程序管理器在Tomcat 6上部署war文件时,部署或无限期挂起需要10分钟。当它挂起时我可以重新启动Tomcat并且通常会部署应用程序,但有时我必须重复此过程。我还注意到在部署期间,Java进程最大化了CPU,RAM大约为10-15%。
我对Java很新,所以我不知道这是否正常,但我无法想象它是怎么回事。有什么我可以做的让这个运行更顺畅/更快?有没有比Tomcat的应用程序管理器更好的部署方式?
答案 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 。安全