为什么 Tomcat 内存没有增加
Why Tomcat Memory is not Increasing
安装应用程序的服务器有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 Ram
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
tomcat 是从 setenv.sh
开始的吗?环境变量继承到子进程中,不会影响父进程,因此以下将不起作用:
$ ./setenvh.sh
$ ./start-tomcat.sh
因为 shell 是父进程,变量在子进程 (setenv.sh
) 中设置,然后在该脚本退出时 "forgotten"。
以下将起作用:
$ . ./setenv.sh
$ ./start-tomcat.sh
因为 .
在当前 shell 中执行 setenv.sh
并在子进程中启动 tomcat 之前修改您的变量。
最好的方法
运行 在 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)
安装应用程序的服务器有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 Ram
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
tomcat 是从 setenv.sh
开始的吗?环境变量继承到子进程中,不会影响父进程,因此以下将不起作用:
$ ./setenvh.sh
$ ./start-tomcat.sh
因为 shell 是父进程,变量在子进程 (setenv.sh
) 中设置,然后在该脚本退出时 "forgotten"。
以下将起作用:
$ . ./setenv.sh
$ ./start-tomcat.sh
因为 .
在当前 shell 中执行 setenv.sh
并在子进程中启动 tomcat 之前修改您的变量。
最好的方法
运行 在 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)