jvm启动参数优化

在cluster域中加入类似如下:

<server-default>

      <jvm-arg>-Xmx4096m</jvm-arg>

      <jvm-arg>-Xms4096m</jvm-arg>

      <jvm-arg>-Xss128k</jvm-arg>

      <jvm-arg>-XX:MaxPermSize=256m</jvm-arg>

      <jvm-arg>-XX:NewSize=768m</jvm-arg>

      <jvm-arg>-XX:SurvivorRatio=4</jvm-arg>

      <jvm-arg>-XX:+UseParNewGC</jvm-arg>

      <jvm-arg>-XX:+UseConcMarkSweepGC</jvm-arg>

      <jvm-arg>-XX:CMSFullGCsBeforeCompaction=10</jvm-arg>

      <jvm-arg>-XX:-CMSParallelRemarkEnabled</jvm-arg>

      <jvm-arg>-XX:CMSInitiatingOccupancyFraction=75</jvm-arg>

      <jvm-arg>-XX:+UseCMSCompactAtFullCollection</jvm-arg>

      <memory-free-min>1M</memory-free-min>

      <thread-max>1024</thread-max>

      <socket-timeout>65s</socket-timeout>

      <keepalive-max>128</keepalive-max>

      <keepalive-timeout>15s</keepalive-timeout>

    </server-default>

解释:

-Xmx:jvm最大可用内存

-Xms:jvm启动时,初始内存大小。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xss:设置每个线程的堆栈大小。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的

-XX:PermSize:JVM初始分配的非堆内存

-XX:MaxPermSize:非堆内存的最大值。(PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)如,class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。)

-XX:NewSize:设置新生代内存大小

-XX:SurvivorRatio:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5

-XX:+UseParNewGC:设置年轻代为并行收集。

-XX:+UseConcMarkSweepGC:设置年老代为并发收集。

-XX:CMSFullGCsBeforeCompaction:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。

-XX:-CMSParallelRemarkEnabled:降低标记停顿

-XX:CMSInitiatingOccupancyFraction=75:CMS堆上, 使用70%后开始CMS收集

-XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎片

memory-free-min:强制resin重启时的最小空闲内存

thread-max:resin最大线程数

socket-timeout:套接字最大等待时间

keepalive-max:keepalived连接的最大数量,对网络性能有影响

keepalive-timeout:keepalived的最大保持时间

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注