java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot默认最大连接数

SpringBoot默认最大连接数的实践

作者:北辰alk

Spring Boot 应用的最大连接数取决于多个因素,包括使用的Web服务器类型、配置以及底层操作系统的限制,下面就来介绍一下不同场景的默认值配置,具有一定的参考价值,感兴趣的可以了解一下

Spring Boot 应用的最大连接数取决于多个因素,包括使用的Web服务器类型、配置以及底层操作系统的限制。下面我将详细分析不同场景下的默认值及其配置方式。

一、默认连接数概述

不同内嵌服务器的默认值

服务器类型默认最大连接数相关配置属性
Tomcat (默认)8192server.tomcat.max-connections
Jetty8192server.jetty.max-connections
Undertow1024server.undertow.io-threads
Netty (WebFlux)取决于事件循环线程数server.netty.* 相关配置

二、Tomcat 的详细配置(默认服务器)

1. 关键线程参数

# 默认配置 (在Spring Boot 2.x/3.x中)
server.tomcat.threads.max=200      # 最大工作线程数
server.tomcat.threads.min-spare=10 # 最小空闲线程数
server.tomcat.max-connections=8192 # 最大连接队列长度

2. 工作原理

3. 计算公式

理论最大并发 = max-threads + accept-count(默认 = 200 + 8192 = 8392)

三、其他服务器的配置

1. Jetty 配置

server.jetty.threads.max=200
server.jetty.threads.min=8
server.jetty.threads.idle-timeout=60000ms
server.jetty.max-connections=8192

2. Undertow 配置

server.undertow.threads.io=8       # I/O线程数(默认CPU核心数×2)
server.undertow.threads.worker=256 # 工作线程数
server.undertow.buffer-size=1024   # 缓冲区大小

四、配置优化建议

1. 生产环境推荐设置

# Tomcat 生产配置示例
server.tomcat.threads.max=800
server.tomcat.threads.min-spare=100
server.tomcat.max-connections=10000
server.tomcat.accept-count=5000

# 连接超时设置
server.tomcat.connection-timeout=5s

2. 考虑因素

五、如何验证当前配置

1. 通过Actuator端点

# 首先启用actuator
management.endpoints.web.exposure.include=*

访问:http://localhost:8080/actuator/env/server.tomcat.*

2. 通过JMX

启动应用时添加JVM参数:

-Dspring.jmx.enabled=true
-Djava.rmi.server.hostname=localhost
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

使用JConsole或VisualVM连接查看

六、操作系统级限制

即使Spring Boot配置允许大量连接,仍需检查:

1. Linux系统限制

# 查看文件描述符限制
ulimit -n

# 临时提高限制
ulimit -n 65535

# 永久修改
# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

2. Windows系统限制

Windows的并发连接数限制主要取决于:

七、性能测试建议

使用压测工具验证实际吞吐量:

# 使用wrk测试
wrk -t12 -c4000 -d30s http://localhost:8080/api

# 使用JMeter
jmeter -n -t test_plan.jmx -l result.jtl

监控指标

八、常见问题解决

1. 出现"Connection refused"错误

2. 高并发下性能下降

3. 内存溢出风险

每连接大约消耗2-4KB内存,10000连接约需40MB内存:

九、总结

Spring Boot默认连接处理能力:

实际生产环境中,应根据:

进行针对性调优,而非简单依赖默认值。记住:更高的连接数意味着更多的资源消耗,需要在吞吐量和资源利用率之间找到平衡点。

到此这篇关于SpringBoot默认最大连接数的实践的文章就介绍到这了,更多相关SpringBoot默认最大连接数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文