0

我需要一些信息:

我有 2 台带有 TOMCAT 7.0.28 和 JAVA jdk1.7.0_05 的 redhat 6.1 Linux 服务器

在 192.168.1.20(TOM04) 我有 1 个带有 MBEAN “java.lang:type=MemoryPool,name=Perm Gen”的实例 TOMCAT 7

在 192.168.1.21(TOM01) 我有 1 个带有 MBEAN “java.lang:type=MemoryPool,name=PS Perm Gen”的实例 TOMCAT 7

为什么MBEAN不像“PERM GEN && PS PERM GEN”是什么意思?(我想要PS Perm Gen无处不在)

http://img27.imageshack.us/img27/5803/tom01u.png

http://img839.imageshack.us/img839/7539/tom04.png

Java 版本相同: java -version java version "1.7.0_05" Java(TM) SE Runtime Environment (build 1.7.0_05-b06)

setnenv.sh 192.168.1.20(TOM04):

!/bin/bash

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib 导出 LD_LIBRARY_PATH

导出 JAVA_HOME=/usr/java/default

JAVA_OPTS="$JAVA_OPTS -Xmx1024m -Xms512m -Xmn384m -server -XX:MaxPermSize=384m" JAVA_OPTS="$JAVA_OPTS -DLOG_ROOT_PATH=/opt/applogs/INSTANCE01" JAVA_OPTS="$JAVA_OPTS -Dcom.ogige.environment=PRODUCTION" JAVA_OPTS ="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError" JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=/opt/applogs" JAVA_OPTS="$JAVA_OPTS -XX:ParallelGCThreads=2" JAVA_OPTS="$JAVA_OPTS -XX:SurvivorRatio=8"

导出 JAVA_OPTS=$JAVA_OPTS

setenv.sh 192.168.1.21(TOM01):

!/bin/bash

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib 导出 LD_LIBRARY_PATH

导出 JAVA_HOME=/usr/java/default

JAVA_OPTS="$JAVA_OPTS -Xmx1024m -Xms512m -Xmn384m -server -XX:MaxPermSize=384m" JAVA_OPTS="$JAVA_OPTS -DLOG_ROOT_PATH=/opt/applogs/INSTANCE01" JAVA_OPTS="$JAVA_OPTS -Dcom.Ogige.environment=PRODUCTION" JAVA_OPTS ="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError" JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=/opt/applogs" JAVA_OPTS="$JAVA_OPTS -XX:ParallelGCThreads=2" JAVA_OPTS="$JAVA_OPTS -XX:SurvivorRatio=8"

导出 JAVA_OPTS=$JAVA_OPTS

4

2 回答 2

1

64 位 JVM 默认使用 Parallel GC,而 32 位 JVM 没有。这就是为什么您在一个上看到“PS Perm Gen”,而在另一个上看到常规的“Perm Gen”。最有可能的是,其中一台使用 64 位 JRE/JDK,另一台使用 32 位(即使两台机器都是 64 位)

如果您愿意,当然可以手动指定 GC 选项以在两个环境中强制执行相同的 GC……或者,如果它们都是 64 位……只需验证您在两个环境中都使用 64 位 JVM。(或者在两种环境中都是 32 位,如果内存不是问题的话)

您可以通过在两种环境中运行“java -version”来验证这一点(假设您使用的是 PATH JRE/JDK 而不是由 JAVA_HOME 指定的单独的环境,Tomcat 可能会这样)并且应该看到一个说“64 位服务器 VM”另一个会说“客户端虚拟机”。至少,我可以用这种方式复制你的行为......

于 2013-05-21T17:17:56.620 回答
1

PS = 并行清除

我不知道为什么我在两台主机上不一样,但无论如何......我想让我的所有实例都使用 PS XXXX 所以我只需添加 setenv.sh ( JAVA_OPTS="$JAVA_OPTS -XX:+UseParallelGC" )

于 2013-05-21T15:56:37.800 回答