我们的Jboss EAP 6.4.5域中有50台服务器。 所有JVM选项均在服务器组级别进行configuration。 但是,仅用于testing目的,我们希望运行具有不同选项的一个JVM,以便与服务器组级别堆设置不同。 这是可行的吗?
我们尝试在host.xml中添加JVM选项,但是这会导致失败,并且在服务器日志中出现重复选项的抱怨
从domain.xml中摘录
<server-groups> <server-group name="ServerGroup_A" profile="Profile_A"> <jvm name="JVM_A"> <heap size="8192m" max-size="8192m"/> <jvm-options> <option value="-XX:+UseG1GC"/> <option value="-Xloggc:${jboss.server.log.dir}/gc/gc_%p_%t.log"/> <option value="-XX:+PrintGCDateStamps"/> <option value="-XX:+HeapDumpOnOutOfMemoryError"/> <option value="-XX:+UseGCLogFileRotation"/> <option value="-XX:NumberOfGCLogFiles=10"/> <option value="-XX:GCLogFileSize=5M"/> <option value="-XX:HeapDumpPath=/opt/app/jboss/logs"/> <option value="-XX:MaxGCPauseMillis=5000"/> <option value="-XX:ParallelGCThreads=8"/> <option value="-XX:+ParallelRefProcEnabled"/> <option value="-XX:+PrintGCDetails"/> <option value="-XX:+PrintReferenceGC"/> <option value="-Djava.util.Arrays.useLegacyMergeSort=true"/> </jvm-options> <environment-variables> <variable name="LD_LIBRARY_PATH" value="/opt/app/jboss/lib/"/> </environment-variables> </jvm> <socket-binding-group ref="smp-sockets"/> <deployments> <deployment name="app.ear"/> </deployments> </server-group> </server-groups>
从(修改)的host.xml片段
<servers directory-grouping="by-type"> <server name="server_50" group="ServerGroup_A" auto-start="true"> <jvm name="server_50" debug-enabled="false"> <heap size="8192m" max-size="8192m"/> <jvm-options> <option value="-server"/> <option value="-d64"/> <option value="-Xms8g"/> <option value="-Xmx8g"/> <option value="-XX:MetaspaceSize=1024m"/> <option value="-XX:NewSize=2048m"/> <option value="-XX:MaxNewSize=2048m"/> <option value="-XX:SurvivorRatio=8"/> <option value="-XX:+DisableExplicitGC"/> <option value="-verbose:gc"/> <option value="-XX:+UseParNewGC"/> <option value="-XX:+CMSParallelRemarkEnabled"/> <option value="-XX:+UseConcMarkSweepGC"/> <option value="-XX:-UseBiasedLocking"/> <option value="-XX:ParallelGCThreads=6"/> <option value="-XX:LargePageSizeInBytes=128m"/> <option value="-XX:+PrintGCDetails"/> <option value="-XX:+PrintGCTimeStamps"/> <option value="-Xloggc:${jboss.server.log.dir}/gc/gc_%p_%t.log"/> <option value="-XX:+UseGCLogFileRotation"/> <option value="-XX:NumberOfGCLogFiles=10"/> <option value="-XX:GCLogFileSize=5M"/> <option value="-Dsun.net.inetaddr.ttl=180"/> <option value="-XX:+HeapDumpOnOutOfMemoryError"/> <option value="-XX:HeapDumpPath=/opt/app/jboss/logs/gc"/> </jvm-options> </jvm> <socket-bindings socket-binding-group="sockets_A" port-offset="100"/> </server>
启动日志中的错误 –
11:06:55,939 ERROR [org.jboss.as.process.Server:server_50.status] (ProcessController-threads - 3) JBAS012006: Failed to send data bytes to process 'Server:server_50' input stream: java.io.IOException: Stream closed at java.lang.ProcessBuilder$NullOutputStream.write(ProcessBuilder.java:433) [rt.jar:1.8.0_121] at java.io.OutputStream.write(OutputStream.java:116) [rt.jar:1.8.0_121] at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) [rt.jar:1.8.0_121] at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) [rt.jar:1.8.0_121] at java.io.FilterOutputStream.flush(FilterOutputStream.java:140) [rt.jar:1.8.0_121] at org.jboss.as.process.stdin.BaseNCodecOutputStream.flush(BaseNCodecOutputStream.java:125) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.stdin.BaseNCodecOutputStream.flush(BaseNCodecOutputStream.java:137) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.stdin.Base64OutputStream.flush(Base64OutputStream.java:44) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.stdin.BaseNCodecOutputStream.close(BaseNCodecOutputStream.java:154) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.stdin.Base64OutputStream.close(Base64OutputStream.java:44) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.ManagedProcess.sendStdin(ManagedProcess.java:164) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.ProcessController.sendStdin(ProcessController.java:208) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.ProcessControllerServerHandler$InitMessageHandler$ConnectedMessageHandler.handleMessage(ProcessControllerServerHandler.java:142) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.protocol.ConnectionImpl.safeHandleMessage(ConnectionImpl.java:269) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.protocol.ConnectionImpl$1$1.run(ConnectionImpl.java:223) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_121] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_121] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_121] at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.2.Final-redhat-1.jar:2.1.2.Final-redhat-1] 11:06:55,944 ERROR [org.jboss.as.protocol.connection] (ProcessController-threads - 3) JBAS016610: Failed to read a message: java.io.IOException: Stream closed at java.lang.ProcessBuilder$NullOutputStream.write(ProcessBuilder.java:433) [rt.jar:1.8.0_121] at java.io.OutputStream.write(OutputStream.java:116) [rt.jar:1.8.0_121] at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) [rt.jar:1.8.0_121] at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) [rt.jar:1.8.0_121] at java.io.FilterOutputStream.flush(FilterOutputStream.java:140) [rt.jar:1.8.0_121] at org.jboss.as.process.stdin.BaseNCodecOutputStream.flush(BaseNCodecOutputStream.java:125) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.stdin.BaseNCodecOutputStream.flush(BaseNCodecOutputStream.java:137) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.stdin.Base64OutputStream.flush(Base64OutputStream.java:44) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.stdin.BaseNCodecOutputStream.close(BaseNCodecOutputStream.java:154) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.stdin.Base64OutputStream.close(Base64OutputStream.java:44) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.ManagedProcess.sendStdin(ManagedProcess.java:164) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.ProcessController.sendStdin(ProcessController.java:208) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.ProcessControllerServerHandler$InitMessageHandler$ConnectedMessageHandler.handleMessage(ProcessControllerServerHandler.java:142) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.protocol.ConnectionImpl.safeHandleMessage(ConnectionImpl.java:269) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at org.jboss.as.process.protocol.ConnectionImpl$1$1.run(ConnectionImpl.java:223) [jboss-as-process-controller-7.5.5.Final-redhat-3.jar:7.5.5.Final-redhat-3] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_121] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_121] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_121] at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.2.Final-redhat-1.jar:2.1.2.Final-redhat-1]