# 性能优化

# 需求

最近项目验收,有个验收指标是接口支持1000并发,前端响应延迟5秒以内。

最早的接口是nodejs写的,单线程,最多支持100并发左右。于是采用springboot框架改造

# 性能测试

# Apifox

Apifox免费,支持自动化测试,配制好接口参数后,最多支持100并发性能测试

# Jmeter

Jmeter是更专业的工具,免费开源,最多支持数量无限制。支持多种协议,多种测试逻辑,前置操作、后置操作等等。

# 性能优化措施

# redis配置

  # 缓存配置
  redis:
    database: 0
    # 地址
    host: 127.0.0.1
    # 端口
    port: 6379
    # 接口超时控制
    timeout: 300ms
    lettuce:
      pool:
        # 连接池中的最小空闲连接
        min-idle: 30
        # 连接池中的最大空闲连接
        max-idle: 120
        # 连接池的最大数据库连接数
        max-active: 200
        # #连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: 50ms
      shutdown-timeout: 50ms

# 数据库配置

    # 👇 高并发核心配置(必须加)
    maximum-pool-size: 40       # 最大连接(扛1000并发)
    minimum-idle: 15             # 最小空闲
    idle-timeout: 60000          # 空闲超时
    max-lifetime: 1800000        # 连接最大寿命
    connection-timeout: 500      # 获取连接超时 500ms(关键!)
    validation-timeout: 1000

# 运行时内存

java -Xms16G -Xmx16G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -jar app.jar

# tomcat 线程

# web配置
server:
  port: 8151
  tomcat:
    threads:
      core: 400       # 核心线程
      max: 600        # 最大线程(翻倍)
    accept-count: 400 # 排队长度(翻倍)

# 结论

测试时间120s

500并发,ramp-up 30秒,平均延迟990ms ,错误率0.97%

1000并发,ramp-up 60秒,平均延迟1668ms, 错误率2.83%

并发超过500,错误率就上来了。

优化添加配置后,平均延迟和错误率还是降不下来

1000并发,ramp-up 60秒,平均延迟1684ms, 错误率2.45%

加上了分布式锁,作用不大

500并发,ramp-up 60秒,平均延迟885ms ,错误率0.61% 有所下降

1000并发,ramp-up 60秒,平均延迟1688ms, 错误率2.51% 没啥效果

完全返回固定值,还是很慢

1000并发,ramp-up 45秒,平均延迟1739ms, 错误率4.33% 还不如用缓存呢

Last Updated: 6/1/2026, 9:21:31 AM