MySQL连接数调优实战:查看与配置

MySQL + HikariCP 连接数调优实战:如何查看用量 & 合理配置 max_connections

在做 Java 后端开发时,我们经常会遇到 MySQL 连接数配置问题,比如:

  • max_connections 配多少合适?
  • HikariCP 的 maximum-pool-size 要不要调?
  • 怎么知道现在数据库的连接用量?

本文结合实战,总结了查看方法、计算方式和调优建议。


1. 查看当前连接使用情况

1.1 查看总连接数 & 活跃连接数

SHOW STATUS LIKE 'Threads_connected';  -- 当前总连接数(包括空闲)
SHOW STATUS LIKE 'Threads_running';    -- 当前活跃连接数(正在执行 SQL)

示例输出:

+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 74    |
| Threads_running   | 1     |
+-------------------+-------+
  • Threads_connected=74 → 现在总共有 74 条连接(大部分可能空闲)
  • Threads_running=1 → 只有 1 条连接在执行 SQL

1.2 持续监控连接变化(高峰期更有参考价值)

Linux 下可以用 watch 命令:

watch -n 1 "mysql -u用户名 -p密码 -e \"SHOW STATUS LIKE 'Threads_connected'; SHOW STATUS LIKE 'Threads_running';\""

每秒刷新一次,让你看到高峰期连接数变化。


1.3 查看每个连接的详细信息

SHOW FULL PROCESSLIST;

常用字段:

  • User:哪个用户
  • Host:从哪台服务器连过来
  • Command:执行状态(Sleep = 空闲)
  • Time:执行/空闲的时间(秒)

1.4 查看 MySQL 最大连接限制

SHOW VARIABLES LIKE 'max_connections';

2. max_connections 配多少合适?

2.1 计算公式

建议:

max_connections ≥ (所有应用连接池最大值之和)× 1.2
  • 所有应用连接池最大值 = 多个服务的 maximum-pool-size 之和
  • 1.2 是预留 20% 的余量,防止偶发的瞬时连接高峰

2.2 实战示例

假设:

  • 只有一个 Java 应用
  • HikariCP 配置:maximum-pool-size=100

那么:

max_connections = 100 × 1.2 = 120

为了保险,可以设 150~200。


2.3 配置方法

临时生效(重启失效):

SET GLOBAL max_connections = 200;

永久生效(修改 my.cnf / my.ini):

[mysqld]
max_connections = 200

3. HikariCP 参数调优建议

假设你的 Spring Boot 配置如下:

spring:datasource:hikari:maximum-pool-size: 100      # 最大连接数minimum-idle: 20            # 最小空闲连接数max-lifetime: 1800000       # 连接最大存活时间(ms)connection-test-query: SELECT 1

3.1 maximum-pool-size

  • 最大连接数,建议略小于 max_connections(留给其他系统一些空间)
  • 如果高峰期 Threads_running 只有 20,没必要配 100,可以改成 30 左右

3.2 minimum-idle

  • 最小空闲连接数,建议设置为 常态并发数,避免过多空闲连接浪费资源

3.3 max-lifetime

  • 连接最大存活时间,建议略小于数据库 wait_timeout
  • MySQL 默认 wait_timeout = 8 小时,可以配 30 分钟或 1 小时

3.4 connection-test-query

  • 如果数据库支持 JDBC4 ping(MySQL 支持),可以不配,Hikari 会自动调用 isValid() 更高效

4. 调优流程总结

  1. 监控高峰期连接数Threads_running
  2. 计算 max_connections = 高峰连接池总和 × 1.2
  3. 设置 maximum-pool-size ≈ 高峰活跃数 × 1.2
  4. 合理配置 minimum-idle(接近常态并发)
  5. 调整 max-lifetime(小于数据库 wait_timeout
  6. 压测验证,确保无 Too many connections 报错

5. 小结

  • max_connections 不是越大越好,要根据业务并发量 + 连接池配置来定
  • 连接池最大值 也要结合实际活跃数,不要盲目调大
  • 观察高峰期数据比拍脑袋设参数更靠谱

建议你在业务高峰时用 watch 连续观察 5~10 分钟,把最大 Threads_running 记录下来,再去定参数,这样 MySQL 和 HikariCP 都不会浪费资源,也能稳定运行。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92473.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

周志华院士西瓜书实战(一)线性规划+多项式回归+逻辑回归+决策树

目录 1. 线性规划 2. 多项式回归 3. 逻辑回归手写数字 4. Pytorch MNIST 5. 决策树 1. 线性规划 先生成 Y1.5X0.2ε 的(X,Y)训练数据 两个长度为30 import numpy as np import matplotlib.pyplot as plt def true_fun(X): # 这是我们设定的真实…

端到端供应链优化案例研究:需求预测 + 库存优化(十二)

本篇文章聚焦于供应链中的库存优化,技术亮点在于通过机器学习改进预测精度,成功将预测误差降低25%,并在六个月内实现库存过剩减少40%。该方法适用于需要优化库存和提升服务水平的商业场景,特别是制药行业,帮助企业在降…

Harbor 企业级实战:单机快速上手 × 高可用架构搭建 × HTTPS安全加固

文章目录一、建立项目二、命令行登录harbor(配置在客户端即可)三、给本地镜像打标签并上传到harbor四、下载harbor的镜像五、创建自动打标签上传镜像脚本六、修改harbor配置七、实现harbor高可用7.1 安装第二台harbor主机7.2 新建目标,输入第…

进程管理、系统高负载、cpu超过800%等实战问题处理

进程管理与高负载实战:CPU 飙到 800% 时的分析与处理 在生产环境中,系统高负载和 CPU 异常占用是运维工程师最常面对的场景之一。 这篇文章将从进程管理基础讲起,到高负载问题定位,再到CPU 占用 800% 的实战处理,帮助你…

控制建模matlab练习12:线性状态反馈控制器-①系统建模

此练习,主要是使用状态空间方程来设计控制器的方法和思路: ①系统建模; ②系统的能控性; ③极点配置; ④最优化控制LQR; ⑤轨迹追踪; 以下是,第①部分:系统建模&#xff…

bytearray和bytes

bytearray和bytes不一样的地方在于,bytearray是可变的。 str 人生苦短,我用Python! bytes bytearray(str.encode()) bytes bytearray(b\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!) str bytes.d…

护网行动之后:容器安全如何升级?微隔离打造内网“微堡垒”

护网行动刚刚落下帷幕,但这场没有硝烟的攻防演练,留给安全行业的思考却从未停止。当“横向移动”成为攻击方屡试不爽的杀手锏时,一个过去可能被忽视的角落——容器网络安全,在本届护网中被推到了前所未有的高度。面对云原生时代容…

一动鼠标就锁屏,设备活动监控方案的技术实现与应用

摘要:本文探讨基于本地化监控机制实现设备操作追踪的技术方案,重点解析其触发逻辑与隐私保护机制。方案适用于需要监控设备使用场景的技术人员。一、核心功能实现原理触发监控机制键盘钩子:通过系统级键盘事件监听(AltL组合键激活…

从零开始学习:深度学习(基础入门版)(1天)

(一) opencv和opencv-contrib的安装(1.1)在桌面地底部的搜索栏,搜索命令提示符,点击并打开命令提示符(1.2)依次输入命令并按回车:pip install opencv-python3.4.18.65 -i…

SimpleMindMap:一个强大的Web思维导图

在信息爆炸的时代,如何高效地组织、记忆和表达复杂信息成为一项关键技能。思维导图作为一种强大的可视化工具,能够帮助我们理清思路、激发创意并提高学习效率。最近在逛github的时候发现了一个开源的思维导图工具SimpleMindMap,和家人们分享下…

正确使用 JetBrains

来自穷鬼的 marker !关键也不是全靠它吃饭,所以……请鄙视我就对了!2023.2.6 和 MybatisX 1.7.3 兼容性好像有些问题,会报错。想一想降级 MybatisX 不如升级一下 Idea。So, do this.官方下载安装包并装之。然后解锁无需下载文件、…

0_外设学习_ESP8266+云流转(no 0基础)

1、环境要求 2个ESP8266模块、2个USB转ESP8266,通过ESP8266_A-->(阿里云)云流转-->ESP8266_B,实现ESP8266_A发布话题,ESP8266_B订阅该话题。 2、阿里云云流转配置 1、基础要求: 添加1个产品&#xf…

AI漫画翻译器-上传图片自动翻译,支持多语言

本文转载自:AI漫画翻译器-上传图片自动翻译,支持多语言 - Hello123 ** 一、AI 漫画翻译器的核心定位 AI 漫画翻译器是专为漫画爱好者设计的智能翻译平台,通过深度学习技术实现漫画文本的精准识别与本地化转换。它能在保留原图排版和艺术风格…

有效介电常数

有效介电常数:如果导体的横截面被介质完全包裹,位于导体之间的电力线(如带状线)就会感受到相同的介电常数。然而,对于微带线、双绞线或共面线,导体周围的介质不是均匀的,所以一些电力线穿过空气,而另一些则穿过介质。图…

51c视觉~合集16

自己的原文哦~ https://blog.51cto.com/whaosoft/14117000 #港大成立计算与数据科学学院,计算机统计双剑合璧 刚刚,港大成立新的计算与数据科学学院,由计算机科学系和统计学系合并。马毅教授被任命为学院首任院长。 马毅教授官宣…

惯量时间常数 H 与转动惯量 J 的关系解析

惯量时间常数 H 与转动惯量 J 的关系解析 在电力系统稳定分析、旋转机械动力学等领域,惯量时间常数(H) 和 转动惯量(J) 是描述旋转体惯性特性的两个核心参数。二者虽然出发点不同,但在数学和物理层面具有紧…

DeepSeek-V3/R1 架构深度剖析:国产大模型的创新突围之路

本文深入解析 DeepSeek-V3/R1 的核心架构设计,揭示其如何在模型效率、推理性能与知识处理等维度实现突破,成为中文大模型领域的标杆之作。 引言:大模型竞技场中的"中国速度" #mermaid-svg-9Kk7tHp57CilWIFU {font-family:"trebuchet ms",verdana,arial,…

【从0到1制作一块STM32开发板】5. 整体布局

在之前的学习中,我偏向的多是嵌入式软件开发的工作,如果想要自己diy一款具备特定功能的嵌入式工具的话,还需要具备画板子的能力。但由于我目前还没学模电,故我打算直接找个b站的学习视频先跟着画个板子出来,简单理解各…

nflsoi 8.8 题解

感觉这把难,不过今天状态比较差,头昏昏的。怎么后面几道蓝题别人光速切掉了?不过赛后再来看感觉也不算特别麻烦的题目。 C.#11698 双循环锦标赛 / TopCoder 10687 The Basketball Div One 题意 约翰与布鲁斯对团体体育赛事颇有研究&#xff0…

面向真实场景的定制化图像降质模型设计方案

面向真实场景的定制化图像降质模型设计方案 1. 核心思路:从真实图像中学习退化模型 1.1 问题定义:合成数据与真实数据的域差距 在超分辨率(Super-Resolution, SR)算法的实际应用中,一个核心挑战源于训练数据与真实测…