为我的所有应用程序增加Tomcat中的HeapSize

时间:2016-11-28 08:18:01

标签: java tomcat docker war

我正在使用tomcat:8在docker中。 这是一些重要的设置(默认)。

$ java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
Picked up JAVA_TOOL_OPTIONS: -Duser.home=/home/jboss -Duser.name=jboss
     intx CompilerThreadStackSize                   = 0                                   {pd product}
    uintx ErgoHeapSizeLimit                         = 0                                   {product}
    uintx HeapSizePerGCThread                       = 87241520                            {product}
    uintx InitialHeapSize                          := 33554432                            {product}
    uintx LargePageHeapSizeThreshold                = 134217728                           {product}
    uintx MaxHeapSize                              := 524288000                           {product}
     intx ThreadStackSize                           = 1024                                {pd product}
     intx VMThreadStackSize                         = 1024                                {pd product}

现在我需要增加最大堆大小,因为我遇到了outofmemory问题的一些问题。 (应用程序非常繁重)。

在它内存不足之前,它警告我几乎达到了最大堆,并且tomcat将会outofmemory。几分钟后它崩溃了。

在我的tomcat中部署了几个.war。 这些应用位于/deployments/xxx.war

ls告诉我

app1_0.1                                               
app1_0.1.war                                           
app2_0.1                                       
app2_0.1.war
...

现在我的问题如下。我是否必须在每个.war文件中单独增加堆大小,或者同时为整个tomcat增加堆大小。 因为我没有找到一个命令来检查一个java应用程序上的heapsize但是当我想增加heapsize时我似乎只找到这样的命令:java -Xms16m -Xmx64m ClassName(所以在一个特定的应用程序上)。

当我刚刚执行它而没有指定应用程序时:

$ java -Xms16m -Xmx64m
Picked up JAVA_TOOL_OPTIONS: -Duser.home=/home/jboss -Duser.name=jboss
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)
where options include:
    -d32      use a 32-bit data model if available
    -d64      use a 64-bit data model if available
    -server   to select the "server" VM
                  The default VM is server,
                  because you are running on a server-class machine.
...

1 个答案:

答案 0 :(得分:0)

尝试增加烫发尺寸: -XX:MaxPermSize参数=256米

当您的应用需要时,这将为您的堆大小添加256mb。