当前位置: 首页 > news >正文

Spring Boot 3 连接池最大连接数设置建议

在Spring Boot 3(默认使用HikariCP连接池)中,设置maximum-pool-size(最大连接数)需综合考虑多个因素。针对50个同时在线用户的场景,以下是分析和建议:


关键考虑因素

  1. 并发请求 ≠ 在线用户数
    50个在线用户  50个并发数据库请求。实际并发量取决于:

    • 用户操作频率(如:每秒请求数 - QPS)

    • 请求处理时间(数据库操作耗时)

    • 业务场景(如:查询密集型 vs 写入密集型)

  2. 数据库能力限制

    • 数据库服务器本身有最大连接限制(如MySQL默认151),需预留资源给其他服务。

    • 连接数过高可能导致数据库过载。

  3. 连接池最佳实践

    • 过小:请求排队,响应延迟

    • 过大:资源浪费,数据库压力激增


推荐设置公式

math

maximum-pool-size = (平均QPS × 平均请求处理时间) + 缓冲值
  • 平均QPS:每秒数据库请求数(例:50个用户,每人每5秒1个请求 → QPS=10)

  • 平均请求处理时间:单次数据库操作耗时(例:100ms = 0.1秒)

  • 缓冲值:应对流量波动的余量(通常为20%~50%)


示例计算

假设以下场景:

  • 50个用户,平均每秒产生 10个请求(QPS=10)

  • 每个数据库请求耗时 100ms(0.1秒)

  • 缓冲值取 30%

math

基础连接数 = 10 × 0.1 = 1  
最终连接数 = 1 × (1 + 0.3) ≈ 1.3 → 向上取整为 **10-15**

结论:设置 maximum-pool-size=10 到 15 是合理起点。


配置建议

  1. 初始保守值

    properties

    spring.datasource.hikari.maximum-pool-size=15
  2. 必须监控与调优

    • 监控指标:

      • 连接池等待队列spring.datasource.hikari.pool-nameWaitCount

      • 数据库活动连接数(通过SHOW PROCESSLIST

    • 如果等待连接数持续 >0,按20%幅度逐步增加。

    • 如果连接利用率长期 <50%,适当减小。

  3. 辅助配置优化

    properties

    # 连接超时(毫秒)
    spring.datasource.hikari.connection-timeout=3000
    # 最大生命周期(分钟)
    spring.datasource.hikari.max-lifetime=30
    # 空闲超时(分钟)
    spring.datasource.hikari.idle-timeout=10

注意事项

  • 避免盲目设置高连接数:50用户场景下,超过30通常不合理(除非有特殊长事务)。

  • 结合数据库配置:确保数据库的max_connections > Hikari的maximum-pool-size

  • 压测验证:使用JMeter模拟50用户并发,观察连接池指标。

最终建议:从 10-15 开始,根据监控数据动态调整,通常不超过 20

http://www.dtcms.com/a/329579.html

相关文章:

  • HTTP 协议详细介绍
  • Spring事务管理实战:从注解到进阶
  • SQL 查询慢?先从 EXPLAIN 看起
  • 可视化调试LangChain SQLChatMessageHistory:SQLite数据库查看全攻略
  • 智算赋能:移动云助力“世界一流数据强港”建设之路
  • 什么是内外网文件传输?如何确保文件在内外网间安全、高效地传输呢?
  • 层次视觉 Transformer 与分布级特征精炼:面向多模态疾病诊断与机器遗忘的深度学习框架研究
  • [idekCTF 2025] diamond ticket
  • C#自定义日期时间选择器
  • 2025 电赛 C 题完整通关攻略:从单目标定到 2 cm 测距精度的全流程实战
  • C++编程学习(第22天)
  • k8s资源管理
  • 集成电路学习:什么是CV计算机视觉
  • 加密界的“瑞士军刀“-----VeraCrypt 加密原理与实操
  • 【数据结构】——栈(Stack)的原理与实现
  • iscc2025决赛wp
  • Redis面试精讲 Day 20:Redis大规模部署性能调优
  • MCP协议更新:从HTTP+SSE到Streamable HTTP,大模型通信的进化之路
  • [Oracle数据库] ORACLE的用户维护和权限操作
  • 多模态RAG赛题实战之策略优化--Datawhale AI夏令营
  • javaswing json格式化工具
  • 何解决PyCharm中pip install安装Python报错ModuleNotFoundError: No module named ‘json’问题
  • Day 39: 图像数据与显存
  • C++ stack and queue
  • Python3:使用venv虚拟环境
  • 猫头虎AI分享:Excel MCP,让AI具备操作Excel表格|创建销售数据表、复制工作表、填充数据、写公式、绘制图表、调节颜色、添加透视表、保存为PDF
  • Oracle数据库空间深度回收:从诊断到优化实战指南
  • Codeforces Round 1042 (Div. 3)
  • 友思特方案 | FPGA 加持,友思特图像采集卡高速预处理助力视觉系统运行提速增效
  • 【记录贴】STM32 I2C 控制 OLED 卡死?根源在 SR1 与 SR2 的读取操作