【发布时间】:2015-04-16 15:42:57
【问题描述】:
我使用以下 shell 命令从 Jenkins 部署我的应用程序:
rm -rf E:/FooTomcat/apache-tomcat-7.0.55/webapps/foo-web;
rm -rf E:/FooTomcat/apache-tomcat-7.0.55/webapps/foo-web.war;
sleep 2;
cp foo-web/target/foo-web-0.0.1-SNAPSHOT.war E:/FooTomcat/apache-tomcat-7.0.55/webapps/foo-web.war
通常在启动定期构建时,Tomcat 会耗尽内存并给出以下错误。
Feb 13, 2015 3:59:58 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive E:\FooTomcat\apache-tomcat-7.0.55\webapps\foo-web.war
Feb 13, 2015 4:00:06 PM org.apache.catalina.startup.HostConfig deployWARs
SEVERE: Error waiting for multi-thread deployment of WAR files to complete
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:818)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1658)
我有windows环境,通过cygwin执行shell。
是shell命令出了点问题,还是因为内存泄漏?我引入了 sleep 是为了给应用程序一些时间来取消部署。我从未尝试过增加睡眠时间。
谢谢。
【问题讨论】:
-
有机会在 Java 8 下运行您的 Tomcat 吗?在 Java 8 中,Permanent Generation (PermGen) 空间被可扩展的 Metaspace 取代。
-
你为什么不用tomcat manager webapp来代替呢?此外,您似乎正在“实时”服务器上运行此脚本,对吗?
-
@Seelenvirtuose 不,不可能用 Java 8 运行 tomcat。
-
@fge 是的,tomcat 服务在脚本运行时正在运行,它会影响部署吗?我不确定什么是“tomcat manager webapp”,我会google一下。
-
嗯,它可能会影响它,是的,特别是因为你运行 Windows
标签: java shell tomcat deployment jenkins