我遇到了奇怪的问题,jboss为7运行jvm 1.7._029。当我从standalone.conf关闭后,jboss需要花费7倍的时间来部署,并且需要7倍的时间来处理请求。
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"
现在需要2秒的请求大约需要15到20秒!如果我打开了上面的选项,那么jboss部署和请求服务都会变得更快。我们通常在Dev中打开它,所以我们从未经历过它,直到我们在分期中关闭它。
Xms和Xmx设置对上述obervations没有影响。
我使用VisualVM进行了一些分析。只有一个jboss实例,只有一个客户端线程发出请求。堆分析表明调试器打开时它会在启动时从Xms设置中预分配好大块的堆。也就是说Xms是1g然后它说“堆大小”1G和“用过的堆”750mb。从那时起,它会快速启动jboss,并且在按顺序执行请求时很少发生故障。
在调试器关闭的情况下运行时,初始“堆大小”仍然是1G,但“使用堆”非常低,然后它尝试在部署期间中途分配更多内存,并最终在一段时间后完成部署。根据新的要求,它再次做同样的事情。即在运行时分配和取消分配内存。
java -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -version
-XX:InitialHeapSize = 268435456 -XX:MaxHeapSize = 4294967296 -XX:+ PrintCommandLineFlags -XX:+ PrintGCDetails -XX:+ UseCompressedOops -XX:+ UseParallelGC java版“1.7.0_51” Java(TM)SE运行时环境(版本1.7.0_51-b13) Java HotSpot(TM)64位服务器VM(内置24.51-b03,混合模式) 堆 PSYoungGen总计76800K,使用2642K [0x00000007aaa80000,0x00000007b0000000,0x0000000800000000) 伊甸园空间66048K,4%使用[0x00000007aaa80000,0x00000007aad14878,0x00000007aeb00000) 来自space 10752K,0%使用[0x00000007af580000,0x00000007af580000,0x00000007b0000000) 空间10752K,0%使用[0x00000007aeb00000,0x00000007aeb00000,0x00000007af580000) ParOldGen总计174592K,使用0K [0x0000000700000000,0x000000070aa80000,0x00000007aaa80000) 对象空间174592K,0%使用[0x0000000700000000,0x0000000700000000,0x000000070aa80000) PSPermGen总计21504K,使用2119K [0x00000006fae00000,0x00000006fc300000,0x0000000700000000) 对象空间21504K,9%使用[0x00000006fae00000,0x00000006fb011da0,0x00000006fc300000)
JBoss流程:
/usr/bin/java -D[Standalone] -server -XX:+UseCompressedOops -XX:+**TieredCompilation** -Dprogram.name=standalone.sh -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.server.default.config=standalone.xml -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -Dcom.sun.management.jmxremote.port=11090 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Xms1024m -Xmx2048m -XX:MaxPermSize=512M -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000