当前位置: 首页 > 工具软件 > WildFly > 使用案例 >

JBoss或Wildfly的性能调优

薄涵衍
2023-12-01

为了优化JBoss或Wildfly应用服务器的性能,我们推荐的优化配置如下:

目录

推荐的JVM设置

打开文件数

最大用户进程

连接积压

设置TCP_KEEPALIVE_INTERVAL

设置TCP_KEEPALIVE_PROBES

为Java虚拟机(JVM)堆分配大页

增加Linux内核熵

测试熵

微调垃圾收集


推荐的JVM设置

windows

1、编辑<JBOSS_HOME>\bin下的standalone.conf.bat,使用以下建议值设置JAVA_OPTS中的JVM参数:

  • JVM Minimum Heap Size:512M
  • JVM Maximum Heap Size:4GB
  • Generic JVM Arguments:

-XX:+UseG1GC -XX:+UseStringDeduplication -XX:+UseCompressedOops -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true

如果需要超过4gb,请在下面介绍的推荐设置进行更积极的垃圾收集。

示例:

set "JAVA_OPTS=-Xms8192m -Xmx8192m -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+UseCompressedOops -Djava.awt.headless=true -Dcom.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager=true"

Linux

linux下编辑<JBOSS_HOME>/bin下的standalone.conf,示例:

JAVA_OPTS="$JAVA_OPTS -Xms8192m -Xmx8192m -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+UseCompressedOops -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Djava.security.egd=file:/dev/./urandom -Dcom.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager=true"

打开文件数

在所有JBoss或WildFly服务器上,为运行JBoss或WildFly进程的用户将Open Files (ulimit -n)设置为至少50000。

最大用户进程

在所有JBoss或WildFly服务器上,为运行JBoss或WildFly进程的用户设置用户进程(ulimit -u)至少为131072。

连接积压

当接收的连接请求过多导致连接失败时,将echo参数的值修改为3000:

echo 3000 > /proc/sys/net/core/netdev_max_backlog
echo 3000 > /proc/sys/net/core/somaxconn

设置TCP_KEEPALIVE_INTERVAL

TCP_KEEPALIVE_INTERVAL参数决定了isAlive间隔探测之间的等待时间。

将TCP_KEEPALIVE_INTERVAL参数的值设置为为15秒。默认值为75秒。

echo 15 > /proc/sys/net/ipv4/tcp_keepalive_intvl

设置TCP_KEEPALIVE_PROBES

TCP_KEEPALIVE_PROBES参数决定超时前探测的数量。

将TCP_KEEPALIVE_PROBES参数的值设置为5秒,为推荐值。默认值为9秒。

echo 5  > /proc/sys/net/ipv4/tcp_keepalive_probes

为Java虚拟机(JVM)堆分配大页

在/etc/sysctl.conf文件中设置:

vm.nr_hugepages = 2048
vm.nr_hugepages_mempolicy = 2048  #2048 = 8192 (Max Heap Size) /4 (Page Size)
#确保以下参数至少设置为以下值(如果已经设置为更高的数值,则更好)
kernel.shmmax = 8689934592  #8689934592 = 8192 * 1048576 bytes/MB + 100000000 bytes
kernel.shmall = 2172483648  #2172483648 = 8689934592 (shmmax) ) / 4 (Page Size)

增加Linux内核熵

在所有CA单点登录服务器上,通过添加以下rngd守护进程来增加内核熵:

1、请确保已安装rng-tool,Linux服务器上安装rng-tools

yum –y install rng-tools

2、编辑

vi /etc/sysconfig/rngd

# Add extra options here
EXTRAOPTIONS="-r /dev/urandom -o /dev/random -t 1 -W 4096"

测试熵

使用命令测试熵值:

watch -n 1 cat /proc/sys/kernel/random/entropy_avail

如果返回值小于1000,则考虑向所有服务器添加熵泵。

微调垃圾收集

你可以根据应用程序的性能需求调整垃圾收集,方法是在JVM命令行中输入以下选项:

-Xms8g -Xmx8g -XX:+UseG1GC -XX:ConcGCThreads=12 -XX:ParallelGCThreads=22 
-XX:MaxGCPauseMillis=1000 -XX:InitiatingHeapOccupancyPercent=40 
-XX:G1HeapWastePercent=2 -XX:G1ReservePercent=15 
-XX:+UnlockExperimentalVMOptions -XX:G1OldCSetRegionThresholdPercent=15 
-XX:G1MixedGCLiveThresholdPercent=90 -XX:G1NewSizePercent=20 
-XX:G1MaxNewSizePercent=25 
  • -XX:ConcGCThreads=12

设置并行标记线程的数量。将n设置为大约1/4的并行垃圾收集线程(ParallelGCThreads)。

  • -XX:ParallelGCThreads=22

设置STW工作线程的值。将n的值设置为逻辑处理器的数量。n的值与不超过8的逻辑处理器的数量相同。

  • -XX:MaxGCPauseMillis=1000

设置所需最大暂停时间的目标值。缺省值是200毫秒。指定值适应您的堆大小。

  • -XX:InitiatingHeapOccupancyPercent=40

设置触发标记周期的Java堆占用阈值。默认的占用率是整个Java堆的45%。

  • -XX:G1HeapWastePercent=2

设置您愿意浪费的堆百分比。当可回收百分比小于堆浪费百分比时,Java HotSpot VM不会启动混合垃圾收集循环。默认是10%。

  • -XX:G1ReservePercent=15

设置保持空闲的预留内存百分比,以减少空间溢出的风险。默认是10%。当您增加或减少百分比时,请确保以相同的数量调整Java堆的总数。

  • -XX:G1OldCSetRegionThresholdPercent=15

设置混合垃圾收集周期中要收集的旧区域数量的上限。默认值是Java堆的10%。

  • -XX:G1MixedGCLiveThresholdPercent=90

设置要包含在混合垃圾收集循环中的旧区域的占用阈值。默认入住率为65%。

  • -XX:G1NewSizePercent=2

将堆的百分比设置为年轻代大小的最小值。默认值为Java堆的5%。这是实验性的标记。

  • -XX:G1MaxNewSizePercent=25

将堆大小的百分比设置为年轻代大小的最大值。默认值是Java堆的60%。这是实验性的标记。

 类似资料: