【问题标题】:Why Tomcat Memory is not Increasing为什么Tomcat内存没有增加
【发布时间】:2017-04-03 03:19:29
【问题描述】:

安装应用程序的服务器有1G内存。但是当 tomcat 启动时它只启动 500MB

我已经创建了 setenv.sh 如下

export CATALINA_OPTS="$CATALINA_OPTS -Xms2024m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx3024m"

我需要知道为什么它没有盯着 2GB

当我想启动tomcat时使用下面的命令

./catalina.sh start

在 CATALINA.SH 下面的代码已经退出,它将调用 setenv.sh

if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
  . "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
  . "$CATALINA_HOME/bin/setenv.sh"
fi

我查过tomcat日志,说是2024m开头,但还是没有用2G内存

INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms2024m
INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx3024m
INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/share/tomcat

【问题讨论】:

    标签: java tomcat memory webserver tomcat8


    【解决方案1】:

    tomcat 是从setenv.sh 开始的吗?环境变量被继承到子进程中,不会影响父进程,所以下面的行不通:

    $ ./setenvh.sh
    $ ./start-tomcat.sh
    

    因为 shell 是父进程,所以变量会在子进程 (setenv.sh) 中设置,然后在该脚本退出时“忘记”。

    以下将起作用:

    $ . ./setenv.sh
    $ ./start-tomcat.sh
    

    因为. 在当前shell 中执行setenv.sh 并在子进程中启动tomcat 之前修改您的变量。

    【讨论】:

    • 你能帮帮我吗,我想启动时运行./catalonia.sh start,请告诉我你启动tomcat的方式
    • 我会编辑 catalina.sh 类似 CATALINA_OPTS="$CATALINA_OPTS -server -Xms2024m -Xmx3024m"
    • 您可以将 setenv.sh 添加到您的问题中吗?
    【解决方案2】:

    最好的办法

    在linux中运行

     export _JAVA_OPTIONS="-Xms2024m -Xmx3024m"
    

    停止启动tomcat

    ./catalina.sh stop
    Using CATALINA_BASE:   /usr/tomcat
    Using CATALINA_HOME:   /usr/tomcat
    Using CATALINA_TMPDIR: /usr/tomcat/temp
    Using JRE_HOME:        /usr/lib/jvm/java-8-oracle
    Using CLASSPATH:       /usr/share/tomcat/bin/bootstrap.jar:/usr/tomcat/bin/tomcat-juli.jar
    Picked up _JAVA_OPTIONS: -Xms2024m -Xmx3024
    

    当你在日志中停止 tomcat 时,它会提到

    Picked up _JAVA_OPTIONS: -Xms2024m -Xmx3024
    

    开始

    ./catalina.sh start
    Using CATALINA_BASE:   /usr/tomcat
    Using CATALINA_HOME:   /usr/tomcat
    Using CATALINA_TMPDIR: /usr/tomcat/temp
    Using JRE_HOME:        /usr/lib/jvm/java-8-oracle
    Using CLASSPATH:       /usr/share/tomcat/bin/bootstrap.jar:/usr/tomcat/bin/tomcat-juli.jar
    

    通过下面的命令你可以检查 JAVA 环境改变了

    java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
    

    结果

     Picked up _JAVA_OPTIONS: -Xms2024m -Xmx3024m
             intx CompilerThreadStackSize                   = 0                                   {pd product}
            uintx ErgoHeapSizeLimit                         = 0                                   {product}
            uintx HeapSizePerGCThread                       = 87241520                            {product}
            uintx InitialHeapSize                          := 2122317824                          {product}
            uintx LargePageHeapSizeThreshold                = 134217728                           {product}
            uintx MaxHeapSize                              := 3170893824                          {product}
             intx ThreadStackSize                           = 1024                                {pd product}
             intx VMThreadStackSize                         = 1024                                {pd product}
        java version "1.8.0_111"
        Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
        Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      • 2021-04-06
      • 1970-01-01
      相关资源
      最近更新 更多