2015年10月1日星期四

EAP_036:EAP 6 JVM 设置

环境:JBoss EAP 6.4.0

1. Standalone mode
在 Standalone mode 中,由于只有一个进程,即 EAP Server,其 JVM 配置在 standalone.conf中,内容如下:
if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms1303m -Xmx1303m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.policy-permissions=true"

2. Domain mode
在 Domain mode 中,Host Controller 负责启动和停止 EAP Server,所以 EAP Server 的 JVM 配置也由 Host Controller 负责。
domain.conf 中的 JVM 配置是 Host Controller 的 JVM 配置,不是 EAP Server 的配置,内容如下:
if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.policy-permissions=true"

在 Domain mode 中的 EAP Server 的 JVM 配置由以下三个地方决定:
(1)host.xml 文件中的 <jvm> 定义
(2)domain.xml 文件中的 <server-group> 定义
(3)host.xml 文件中的 <server> 定义
从下往上,在 <server>中的 JVM 定义覆盖在 <server-group> 中的 JVM 定义,在 <server-group> 中的 JVM 定义覆盖<jvm> 中的 JVM 定义。

例1:在 host.xml 文件中的 <jvm> 定义
<jvms>
     <jvm name="small_jvm">
         <heap size="64m" max-size="128m"/>
     </jvm>
<jvm name="production_jvm">
    <heap size="2048m" max-size="2048m"/>
    <permgen size="128m" max-size="512m"/>
    <stack size="1024k"/>
    <jvm-options>
     <option value="-XX:-UseParallelGC"/>
    </jvm-options>
</jvm>
  
</jvms>

例2:<server-group> 和 <server> 定义都可以引用 jvm 定义,引用的同时,也可以覆盖其中的JVM配置。

<server-group name="groupA" profile="default">
    <jvm name="production_jvm"/>
    <socket-binding-group ref="standard-sockets"/>
</server-group>

<server-group name="groupB" profile="default">
       <jvm name="production_jvm">
           <heap size="1024m" max-size="1024m"/>
       </jvm>
       <socket-binding-group ref="standard-sockets"/>
</server-group>

<server name="test_server" group="groupB" auto-start="true">
    <socket-binding-group ref="standard-sockets" port-offset="300"/>
 <jvm name="production_jvm">
      <heap size="256m"/>
    </jvm>
</server>

3. 检查某个 EAP Server 使用内存的情况: ps -eaf | grep test_server

没有评论: