Tomcat 由于 java 堆内存不足,不会部署应用程序
Tomcat won't deploy an application due low java heap memory
我想将我的 .war
(cca 55MB) 应用程序部署到 apache tomcat 7 应用程序服务器,但是部署失败。当我尝试部署一些较小的 .war
存档(cca 4MB)时,它完成时没有任何问题。我试过增加 java heap
space 现在应该足够了。此外,在尝试部署此 .war
之后,甚至 tomcat manager
也会崩溃。对于如何解决这个问题,我很乐意提出任何建议。
root@vm15187:~# java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
uintx AdaptivePermSizeWeight = 20 {product}
intx CompilerThreadStackSize = 0 {pd product}
uintx ErgoHeapSizeLimit = 0 {product}
uintx HeapSizePerGCThread = 87241520 {product}
uintx InitialHeapSize := 65019648 {product}
uintx LargePageHeapSizeThreshold = 134217728 {product}
uintx MaxHeapSize := 1042284544 {product}
uintx MaxPermSize = 174063616 {pd product}
uintx PermSize = 21757952 {pd product}
intx ThreadStackSize = 1024 {pd product}
intx VMThreadStackSize = 1024 {pd product}
java version "1.7.0_75"
OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~deb7u1)
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
在我的 catalina.out
日志中有这些错误消息:
SEVERE: Error waiting for multi-thread deployment of WAR files to complete
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
SEVERE: Error waiting for multi-thread deployment of directories to completehostConfig.deployWar=Deploying web application archive {0}
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
完整日志here
您需要继续增加内存分配 -XmxNNNNm
直到它起作用,然后使用内存分析工具了解是什么在消耗它。根据我的经验,55MB WAR 文件是一个相当大的应用程序。
注意你应该使用:
CATALINA_OPTS="-Xms..."
而不是 JAVA_OPTS。后一个环境变量适用于为支持 Tomcat 而启动的所有 java 个进程。 CATALINA_OPTS 仅应用于服务器进程。
我想将我的 .war
(cca 55MB) 应用程序部署到 apache tomcat 7 应用程序服务器,但是部署失败。当我尝试部署一些较小的 .war
存档(cca 4MB)时,它完成时没有任何问题。我试过增加 java heap
space 现在应该足够了。此外,在尝试部署此 .war
之后,甚至 tomcat manager
也会崩溃。对于如何解决这个问题,我很乐意提出任何建议。
root@vm15187:~# java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
uintx AdaptivePermSizeWeight = 20 {product}
intx CompilerThreadStackSize = 0 {pd product}
uintx ErgoHeapSizeLimit = 0 {product}
uintx HeapSizePerGCThread = 87241520 {product}
uintx InitialHeapSize := 65019648 {product}
uintx LargePageHeapSizeThreshold = 134217728 {product}
uintx MaxHeapSize := 1042284544 {product}
uintx MaxPermSize = 174063616 {pd product}
uintx PermSize = 21757952 {pd product}
intx ThreadStackSize = 1024 {pd product}
intx VMThreadStackSize = 1024 {pd product}
java version "1.7.0_75"
OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~deb7u1)
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
在我的 catalina.out
日志中有这些错误消息:
SEVERE: Error waiting for multi-thread deployment of WAR files to complete
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
SEVERE: Error waiting for multi-thread deployment of directories to completehostConfig.deployWar=Deploying web application archive {0}
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
完整日志here
您需要继续增加内存分配 -XmxNNNNm
直到它起作用,然后使用内存分析工具了解是什么在消耗它。根据我的经验,55MB WAR 文件是一个相当大的应用程序。
注意你应该使用:
CATALINA_OPTS="-Xms..."
而不是 JAVA_OPTS。后一个环境变量适用于为支持 Tomcat 而启动的所有 java 个进程。 CATALINA_OPTS 仅应用于服务器进程。