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

SpringBoot项目部署Linux后JMeter并发测试出429错误,如何解决?

解决SpringBoot项目服务器端JMeter测试出现429错误的方案

1. 修正Tomcat配置的格式问题

你的Tomcat配置缺少server顶层节点,SpringBoot无法正确识别这些参数,导致Tomcat使用默认配置(默认max-threads为200、accept-count为100),这是引发429错误的核心原因之一。

正确的YAML配置格式应为:

server:
  tomcat:
    max-threads: 800
    accept-count: 1000
    max-connections: 10000
    min-spare-threads: 100

修改后重启项目,在启动日志中搜索maxThreads、acceptCount、maxConnections关键词,确认Tomcat初始化时加载了上述配置参数。

2. 调整Linux系统的文件描述符限制

Tomcat的max-connections设置依赖于系统允许的最大打开文件数,Linux默认的文件描述符限制(通常为1024)远低于你配置的10000,会导致Tomcat无法处理足够的连接,进而返回429错误。

临时生效(重启服务器后失效)

执行命令:

ulimit -n 16384

永久生效

编辑/etc/security/limits.conf文件,添加以下内容:

* soft nofile 16384
* hard nofile 16384

保存后重启服务器,或重新登录用户使配置生效。

3. 排查项目中的限流组件

检查项目中是否引入了以下限流相关组件:

  • Spring Security的速率限制规则
  • Spring Cloud Gateway的限流过滤器
  • 自定义的限流实现(如基于Redis的令牌桶/漏桶算法)

这些组件会独立于Tomcat线程池限制请求频率,即使Tomcat配置足够,也可能返回429错误。可以临时禁用这些组件后重新测试,确认是否是限流规则导致的问题,再针对性调整规则阈值。

4. 监控Tomcat的运行状态

通过JMX连接Tomcat,监控以下指标:

  • 当前活跃线程数
  • 等待队列长度
  • 已建立连接数

如果这些指标达到了配置的阈值,说明Tomcat的资源确实不足以处理请求,需要根据服务器硬件配置(CPU核心数、内存)进一步调整max-threads、max-connections等参数(通常max-threads设置为CPU核心数的2-4倍较为合理)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:20:20