使用domain.tld /经理/ serverinfo:
OK - Server info
Tomcat Version: Apache Tomcat/6.0.35
OS Name: Linux
OS Version: 2.6.32-042stab113.11
OS Architecture: amd64
JVM Version: 1.6.0_38-b38
JVM Vendor: Sun Microsystems Inc.
在我的Ubuntu 12.04 LTS机器上,我已经将Tomcat的JVM内存从-Xms64m -Xmx128m
增加到-Xms256m -Xmx768m
- 或者我认为。当我重新启动Tomcat后查看java进程时,所有内容看起来都已接受增加的内存。
我使用JAVA_OPTS="-Xms256m -Xmx768m"
启动Tomcat,它根据top
工作(进程1842是唯一的java进程):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1842 tomcat6 20 0 1455m 162m 11m S 0 2.0 0:16.35 /usr/lib/jvm/java-6-openjdk-amd64/bin/java -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties -Xms256m -Xmx768m ...
# cat /proc/1842/cmdline
/usr/lib/jvm/java-6-openjdk-amd64/bin/java -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties -Xms256m -Xmx768m -Djava.endorsed.dirs=...
但是当我查看经理webapp时,我看不到我期望的信息。它和以前一样(是的,我重新启动了Tomcat并重新加载了页面)。
使用domain.tld /经理/状态:
JVM
Free memory: 15.69 MB Total memory: 78.18 MB Max memory: 113.81 MB
我甚至可以强制发生Out-of-Java-heap-space
错误,该错误发生在126米左右(由经理webapp报告)。显然,我的webapp没有看到增加的JVM内存。我做错了什么?
编辑1
我遇到了Java虚拟机进程状态工具(jps
),它给了我一个很好的细节:即使你看不到cat /proc/1842/cmdline
,旧的-Xms64M
和-Xmx128m
进入JVM(见最后):
# jps -lvm
1842 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties -Djava.awt.headless=true -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms256m -Xmx768m -XX:MaxPermSize=512m -Xss192k -XX:+UseParallelGC -XX:MaxGCPauseMillis=1500 -XX:GCTimeRatio=9 -XX:+DisableExplicitGC -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed -Dcatalina.base=/var/lib/tomcat6 -Dcatalina.home=/usr/share/tomcat6 -Djava.io.tmpdir=/tmp/tomcat6-tomcat6-tmp -Xms64M -Xmx128m
现在我只需找到-Xms64M
和-Xmx128m
来自的地方。显然JVM并不关心我的参数,即使它们被传递给它(通过setenv.sh
)。我开始搜索但还没找到任何东西......
编辑2
不知何故_JAVA_OPTIONS
已设置并覆盖我在setenv.sh
中指定的值。我现在正在清除_JAVA_OPTIONS
,一切都很好。