性能压测服务器调优配置-Linux

1、内核参数调整

  • 调整文件描述符限制:
sudo sysctl -w fs.file-max=35942900
  • 调整内核参数以优化网络性能:
sudo sysctl -w net.core.somaxconn=65535
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=65535
  • 调整内存分配策略:
sudo sysctl -w vm.swappiness=10
sudo sysctl -w vm.dirty_ratio=10
sudo sysctl -w vm.dirty_background_ratio=5
  • 调整 TCP 缓冲区大小:
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo sysctl -w net.ipv4.tcp_rmem='4096 87380 16777216'
sudo sysctl -w net.ipv4.tcp_wmem='4096 65536 16777216'

2、Tomcat参数配置

1、调整 JVM 参数:

  • 增加堆内存大小(-Xmx)和初始堆大小(-Xms)(给机器空闲内存的80%)以确保足够的内存供应:
export CATALINA_OPTS="$CATALINA_OPTS -Xmx10g -Xms10g"
  • 选择低延迟的垃圾回收算法:

在 Java 8 中,G1 垃圾回收器虽然不是默认的垃圾回收器,但也可以使用。启用 G1 垃圾回收器可以通过设置如下参数:

export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseG1GC"
  • 调整垃圾回收相关参数:

设置并发线程数以减少垃圾回收的停顿时间:

export CATALINA_OPTS="$CATALINA_OPTS -XX:ParallelGCThreads=4"

调整 G1 垃圾回收器的最大暂停时间目标(MaxGCPauseMillis):

export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxGCPauseMillis=200"
  • 优化新生代和老年代的大小和比例:

调整新生代和老年代的比例以适应低延时要求:

export CATALINA_OPTS="$CATALINA_OPTS -XX:NewRatio=2"

2、调整 Tomcat 连接器参数:

增加连接器的最大线程数(maxThreads)与调整连接器的接收线程数(acceptCount):

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" 
           maxThreads="5000"
           acceptCount="1000" />

3、客户端连接端口(在jmeter服务器上)

  • 增加可用端口:

    sysctl -a |grep port_range

    net.ipv4.ip_local_port_range = 50000 65000 -----意味着50000~65000端口可用

  • 修改参数:

    vi /etc/sysctl.conf

    net.ipv4.ip_local_port_range = 10000 65000 -----意味着10000~65000端口可用

  • 使参数生效:

    sysctl -p

4、优化应用程序

  • application.properties文件中,修改server.tomcat.max-threads的值

  • 接口日志记录策略选择不记录

  • 对于网关接口可以使用缓存,可在修改api->高级配置->发布配置->备注那里填入参数比如requestConfig:5requestConfig:3,这个数值可以更改试试(仅限整数)数值越小,TPS越高

5、监控与性能测试

  • 使用工具如 top, htop, nload, iftop 等实时监控服务器性能。
  • 使用性能测试工具如 Apache Bench(ab)、JMeter 等进行压力测试,验证调整后的参数是否能够满足性能需求。

性能压测服务器调优配置-Windows

1、服务器注册表调优

TcpTimedWaitDelay:确定 TCP/IP 可释放已关闭连接并重用其资源前,必须经过的时间。关闭和释放之间的此时间间隔通称 TIME_WAIT 状态或两倍最大段生命周期(2MSL)状态。此时间期间,重新打开到客户机和服务器的连接的成本少于建立新连接。减少此条目的值允许 TCP/IP 更快地释放已关闭的连接,为新连接提供更多资源。如果运行的应用程序需要快速释放和创建新连接,而且由于 TIME_WAIT 中存在很多连接,导致低吞吐量,则调整此参数。 如何查看或设置: 使用 regedit 命令访问 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ Services/TCPIP/Parameters 注册表子键并创建名为 TcpTimedWaitDelay 的新 REG_DWORD 值。 将此值设置为十进制 30,其为十六进制 0x0000001e。该值将等待时间设置为 30 秒。 停止并重新启动系统。 缺省值:0xF0,它将等待时间设置为 240 秒(4 分钟)。 建议值:最小值为 0x1E,它将等待时间设置为 30 秒。

MaxUserPort :确定在应用程序从系统请求可用用户端口时,TCP/IP 可指定的最高端口号。 如何查看或设置: 使用 regedit 命令访问 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ Services/TCPIP/Parameters 注册表子键并创建名为 MaxUserPort 的新 REG_DWORD 值。 停止并重新启动系统。 缺省值:无 建议值:至少十进制 32768,建议65534

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services[Tcpip](https://so.csdn.net/so/search?q=Tcpip&spm=1001.2101.3001.7020)\Parameters]
"MaxUserPort"=dword:fffe
"TcpTimedWaitDelay"=dword:1e
"TcpNumConnections"=dword:fffffe
"MaxFreeTcbs"=dword:3e80
"MaxHashTableSize"=dword:10000