You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot应用压测适配配置咨询及BindException问题排查

问题分析与解决方案

先解决当前的端口耗尽错误

你遇到的java.net.BindException: Address already in use: connect是JMeter所在客户端机器的本地端口耗尽导致的:短时间内大量请求创建新TCP连接,用完了可用的本地端口,且处于TIME_WAIT状态的端口没及时复用。解决方法如下:

  • 调整JMeter连接复用配置:在HTTP请求采样器中勾选「使用keep-alive」,让JMeter复用TCP连接,避免每次请求新建连接消耗端口。
  • 修改客户端机器TCP参数(以Linux为例):
    • 允许复用TIME_WAIT状态的端口:
      sysctl -w net.ipv4.tcp_tw_reuse=1
      
    • 扩大本地可用端口范围:
      sysctl -w net.ipv4.ip_local_port_range="1024 65535"
      
    • 若需要永久生效,把上述参数写入/etc/sysctl.conf后执行sysctl -p。
  • 调整JMeter压测节奏:不要瞬间启动100线程,设置合理的「Ramp-Up Period」(比如300秒)让线程缓慢启动,避免短时间内端口耗尽。

SpringBoot压测优化配置

针对压测场景,建议调整以下应用配置(以application.properties为例):

1. Web容器优化(默认Tomcat)

# 最大并发连接数,根据服务器硬件调整
server.tomcat.max-connections=8192
# 线程池最大线程数,推荐值为CPU核心数*2 + 20左右
server.tomcat.threads.max=200
# 核心线程数,保证基础并发处理能力
server.tomcat.threads.min-spare=50
# 连接超时时间,避免无效连接占用资源
server.tomcat.connection-timeout=20000
# 启用TCP长连接,复用服务端连接
server.tomcat.tcp-keep-alive=true
# 等待队列大小,线程池满时请求进入队列等待
server.tomcat.accept-count=1000

如果使用Undertow容器,配置示例:

server.undertow.io-threads=20  # IO线程数,一般等于CPU核心数
server.undertow.worker-threads=200  # 业务处理线程数
server.undertow.max-connections=8192

2. JVM参数优化

在应用启动脚本中添加以下参数:

java -Xmx4g -Xms4g -XX:+UseG1GC -XX:MaxDirectMemorySize=2g -jar your-app.jar
  • -Xmx/-Xms:设置堆内存大小,根据服务器内存调整(比如8G内存的服务器可设为4G)
  • +UseG1GC:使用G1垃圾收集器,减少GC停顿时间
  • MaxDirectMemorySize:调整直接内存大小,适配NIO场景

3. Spring业务优化

  • 关闭不必要的自动配置(如不需要安全模块):
    spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
    
  • 优化Jackson序列化:
    spring.jackson.serialization.write-date-timestamps-as-nanoseconds=false
    spring.jackson.deserialization.fail-on-unknown-properties=false
    
  • 启用缓存(业务允许的情况下):用Redis缓存热点数据,减少DB查询压力:
    spring.cache.type=redis
    spring.redis.host=your-redis-host
    spring.redis.port=6379
    

内容的提问来源于stack exchange,提问作者mc ser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:40:20