如何有效利用MYSQL的连接数
连接数配置2500~3000 依然发现连接不够用?
-- 查看当前最大连接数
SHOW VARIABLES LIKE 'MAX_CONNECTIONS';
-- 查看当前总链接数
SHOW STATUS LIKE 'Threads_connected';
-- 查看当前进程明细
SHOW PROCESSLIST;
合理设置以下参数:
1. MySQL 的参数设置
MySQL 有两个关键参数控制连接的空闲超时时间:
wait_timeout
-
作用:控制非交互式连接(如通过 JDBC、ODBC 等程序连接的客户端)的空闲超时时间。
-
默认值:28800 秒(8 小时)。
-
建议值:根据业务需求设置,通常可以设置为 600 秒(10 分钟)。
interactive_timeout
-
作用:控制交互式连接(如通过 MySQL 命令行客户端或 PHPMyAdmin 等工具连接的客户端)的空闲超时时间。
-
默认值:28800 秒(8 小时)。
-
建议值:与
wait_timeout保持一致,通常设置为 600 秒(10 分钟)。
设置方法
-
临时设置(重启后失效):
sql
复制
SET GLOBAL wait_timeout = 600; SET GLOBAL interactive_timeout = 600;
-
永久设置(修改配置文件):
在 MySQL 配置文件(my.cnf或my.ini)中添加或修改以下内容:ini
复制
[mysqld] wait_timeout = 600 interactive_timeout = 600
然后重启 MySQL 服务。
2. HikariCP 连接池的参数设置
HikariCP 是一个高性能的连接池,以下是关键参数及其与 MySQL 超时设置的关联:
max-lifetime
-
作用:控制连接在连接池中的最大存活时间。超过该时间的连接会被销毁并重新创建。
-
建议值:设置为小于 MySQL 的
wait_timeout和interactive_timeout的值。例如,如果 MySQL 的超时时间是 600 秒,可以将max-lifetime设置为 540000 毫秒(9 分钟)。 -
单位:毫秒。
idle-timeout
-
作用:控制连接在连接池中的最大空闲时间。超过该时间的空闲连接会被销毁。
-
建议值:根据业务需求设置,通常可以设置为 60000 毫秒(1 分钟)。
-
单位:毫秒。
connection-timeout
-
作用:控制从连接池获取连接的最大等待时间。如果超时,会抛出异常。
-
建议值:通常设置为 30000 毫秒(30 秒)。
-
单位:毫秒。
minimum-idle
-
作用:控制连接池中保持的最小空闲连接数。
-
建议值:根据业务需求设置,通常可以设置为 10~50。
-
注意:设置过高会导致资源浪费,设置过低可能影响性能。
maximum-pool-size
-
作用:控制连接池的最大连接数。
-
建议值:根据业务需求和数据库性能设置,通常可以设置为 100~200。
3. 配置示例
以下是一个完整的 HikariCP 配置示例(以 Spring Boot 的 application.yml 为例):
yaml
复制
spring:datasource:hikari:connection-test-query: SELECT 1 # 连接测试查询connection-timeout: 30000 # 连接获取超时时间(30 秒)maximum-pool-size: 150 # 最大连接数max-lifetime: 540000 # 连接最大存活时间(9 分钟)minimum-idle: 10 # 最小空闲连接数idle-timeout: 60000 # 空闲连接超时时间(1 分钟)
4. 参数之间的关系
-
MySQL 的
wait_timeout和interactive_timeout:控制 MySQL 服务器关闭空闲连接的时间。 -
HikariCP 的
max-lifetime:控制连接在连接池中的最大存活时间。 -
HikariCP 的
idle-timeout:控制连接在连接池中的最大空闲时间。
关键点:
-
max-lifetime必须小于 MySQL 的wait_timeout和interactive_timeout,否则连接池中的连接可能会被 MySQL 关闭,导致应用使用无效连接。 -
idle-timeout可以适当设置,以定期清理空闲连接,避免资源浪费。
5. 验证配置
-
使用
SHOW VARIABLES LIKE 'wait_timeout';和SHOW VARIABLES LIKE 'interactive_timeout';确认 MySQL 的超时设置。 -
使用
SHOW PROCESSLIST;查看 MySQL 的连接状态,确认是否有大量Sleep状态的连接。 -
监控 HikariCP 的连接池状态,确保连接池中的连接数在合理范围内。
6. 总结
-
MySQL 设置:
ini
复制
wait_timeout = 600 interactive_timeout = 600
-
HikariCP 设置:
yaml
复制
hikari:max-lifetime: 540000idle-timeout: 60000connection-timeout: 30000minimum-idle: 10maximum-pool-size: 150
通过以上配置,可以确保 MySQL 和 HikariCP 的参数设置是合理的,避免连接被关闭或连接池使用无效连接的问题。
wait_timeout 和 interactive_timeout 通常需要同时设置,因为它们分别控制不同类型的连接空闲超时时间。以下是具体原因和建议:
1. wait_timeout 和 interactive_timeout 的区别
-
wait_timeout:-
适用于非交互式连接(如通过 JDBC、ODBC 等程序连接的客户端)。
-
控制连接在空闲状态下的最大存活时间。
-
-
interactive_timeout:-
适用于交互式连接(如通过 MySQL 命令行客户端或 PHPMyAdmin 等工具连接的客户端)。
-
控制连接在空闲状态下的最大存活时间。
-
2. 为什么要同时设置?
-
如果只设置
wait_timeout,交互式连接的空闲超时时间仍然会使用默认的interactive_timeout值。 -
如果只设置
interactive_timeout,非交互式连接的空闲超时时间仍然会使用默认的wait_timeout值。 -
为了确保所有类型的连接都遵循相同的空闲超时规则,建议同时设置这两个参数。
相关文章:
如何有效利用MYSQL的连接数
连接数配置2500~3000 依然发现连接不够用? -- 查看当前最大连接数 SHOW VARIABLES LIKE MAX_CONNECTIONS; -- 查看当前总链接数 SHOW STATUS LIKE Threads_connected; -- 查看当前进程明细 SHOW PROCESSLIST; 合理设置以下参数: 1. MySQL 的参数设置 …...
调用click.getchar()时Windows PyCharm无法模拟键盘输入
文章目录 问题描述解决方案参考文献 问题描述 调用 click.getchar() 时,Windows PyCharm 无法模拟键盘输入 解决方案 Run → Edit Configurations… → Modify options → Emulate terminal in output console 参考文献 Terminal emulator | PyCharm Documentati…...
使用Hardhat实现ERC20 代币合约详解
ERC20 代币合约详解 💰 1. 合约概览 // SPDX-License-Identifier: MIT pragma solidity ^0.8.20;import "openzeppelin/contracts/token/ERC20/ERC20.sol";contract MyToken is ERC20 {constructor() ERC20("MyToken", "MTK") {_min…...
清华大学《DeepSeek与AI幻觉》(无套路免费分享)
随着人工智能技术的飞速发展,以DeepSeek为代表的国产大模型正逐渐成为各行各业的重要工具。然而,AI在生成内容时常常会出现“幻觉”——即生成与事实不符、逻辑断裂或脱离上下文的内容。 清华大学新闻与传播学院与人工智能学院联合推出的这篇教程《Deep…...
代码随想录算法【Day52】
Day51 101. 孤岛的总面积 思路 从周边找到陆地然后 通过 dfs或者bfs 将周边靠陆地且相邻的陆地都变成海洋,然后再去重新遍历地图 统计此时还剩下的陆地 代码 #include <iostream> #include <vector> using namespace std; int dir[4][2] {-1, 0, …...
Spark 和 Flink
Spark 和 Flink 都是目前流行的大数据处理引擎,但它们在架构设计、应用场景、性能和生态方面有较大区别。以下是详细对比: 1. 架构与核心概念 方面Apache SparkApache Flink计算模型微批(Micro-Batch)为主,但支持结构…...
Unity结合Vuforia虚拟按键实现AR机械仿真动画效果
零、最终效果 待上传 一、资源准备 1、Vuforia Vuforia版本不能高于10.17.4(往上的版本虚拟按键功能被删除) 2、Unity Unity版本必须要高于2022.3.x,不然使用Vuforia插件时会出现bug 二、主要内容 1、添加虚拟按钮 2、为虚拟按钮设置…...
PL/SQL 异常处理
目录 一、命名的系统异常 1.常见命名的系统异常 2.预定义的系统异常数量以及描述 3.处理命名的系统异常的一般步骤 二、程序员定义的异常 1.概念 2.自定义异常的定义与抛出 3.自定义异常的处理 三、未命名的系统异常 1.概述 2.处理未命名的系统异常的方法 3.使用场景 …...
【自学笔记】Spring Boot框架技术基础知识点总览-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Spring Boot框架技术基础知识点总览一、Spring Boot简介1.1 什么是Spring Boot?1.2 Spring Boot的主要特性 二、Spring Boot快速入门2.1 搭建Spring Boo…...
Redis 缓存穿透、击穿、雪崩:问题与解决方案
在使用 Redis 作为缓存中间件时,系统可能会面临一些常见的问题,如 缓存穿透、缓存击穿 和 缓存雪崩。这些问题如果不加以解决,可能会导致数据库压力过大、系统响应变慢甚至崩溃。本文将详细分析这三种问题的起因,并提供有效的解决…...
第一个CMAKE项目hello cmake
#注意! 这篇文章是为WINDWOS用户写的 #请检查你的电脑上已经安装了MINGW和CMAKE 快速检查方法如下 C:\Users\Basicoperation>g --version g (x86_64-win32-seh-rev1, Built by MinGW-Builds project) 14.2.0 Copyright (C) 2024 Free Software Foundation, Inc. …...
骶骨神经
骶骨肿瘤手术后遗症是什么_39健康网_癌症 [健康之路]匠心仁术(七) 勇闯禁区 骶骨肿瘤切除术...
基于Django的购物商城平台的设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
摘要 当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强,计算机技术对经济社会发展和人民生活改善的影响也日益突出,人类的生存和思考方式也产生了变化。传统购物管理采取了人工的管理方法,但这种管理方法存…...
使用快捷键高效管理 VSCode:提升工作效率,告别鼠标操作
如果你想提高工作效率,减少鼠标操作,掌握键盘快捷键是一个非常有效的方式。在编程过程中,熟练使用快捷键能够快速管理文件、标签页,节省时间并提升效率。比如,Ctrl P 和 Ctrl W 可以快速打开和关闭文件,而…...
【找工作】C++和算法复习(自用)
文章目录 C头文件自定义排序函数stl 算法数据结构树状数组 数学 自用随便记录 C 排序 stl 头文件 全能头文件: #include<bits/stdc.h>自定义排序函数 bool compare(const int &odd1,const int &odd2) {return odd1>odd2; }stl 枚举map map&…...
大语言模型基础
简介 AI大模型是“人工智能预训练大模型”的简称,包含了“预训练”和“大模型”两层含义,二者结合产生了一种新的人工智能模式,即模型在大规模数据集上完成了预训练后无需微调,或仅需要少量数据的微调,就能直接支撑各类应用。AI大模型主要分为三类:大语言模型、CV大模型…...
深入浅出机器学习:概念、算法与实践
目录 引言 机器学习的基本概念 什么是机器学习 机器学习的基本要素 机器学习的主要类型 监督学习(Supervised Learning) 无监督学习(Unsupervised Learning) 强化学习(Reinforcement Learning) 机器…...
2024年国赛高教杯数学建模A题板凳龙闹元宵解题全过程文档及程序
2024年国赛高教杯数学建模 A题 板凳龙闹元宵 原题再现 “板凳龙”,又称“盘龙”,是浙闽地区的传统地方民俗文化活动。人们将少则几十条,多则上百条的板凳首尾相连,形成蜿蜒曲折的板凳龙。盘龙时,龙头在前领头&#x…...
老游戏回顾:d2
游戏中玩家创建属于自己的角色,在一片片暗黑大地上奔跑、杀敌、寻宝、成长,最终打败统治各个大陆的黑暗势力,拯救游戏中的各个种族。 《暗黑破坏神II》的制作团队包括编程小组、运动物体制作小组和背景制作小组。游戏设计很大程度上是开放的&…...
【深度学习】Pytorch的深入理解和研究
一、Pytorch核心理解 PyTorch 是一个灵活且强大的深度学习框架,广泛应用于研究和工业领域。要深入理解和研究 PyTorch,需要从其核心概念、底层机制以及高级功能入手。以下是对 PyTorch 的深入理解与研究的详细说明。 1. 概念 动态计算图(D…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
土建施工员考试:建筑施工技术重点知识有哪些?
《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...
ThreadLocal 源码
ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物,因为每个访问一个线程局部变量的线程(通过其 get 或 set 方法)都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段,这些类希望将…...
如何通过git命令查看项目连接的仓库地址?
要通过 Git 命令查看项目连接的仓库地址,您可以使用以下几种方法: 1. 查看所有远程仓库地址 使用 git remote -v 命令,它会显示项目中配置的所有远程仓库及其对应的 URL: git remote -v输出示例: origin https://…...
HTTPS证书一年多少钱?
HTTPS证书作为保障网站数据传输安全的重要工具,成为众多网站运营者的必备选择。然而,面对市场上种类繁多的HTTPS证书,其一年费用究竟是多少,又受哪些因素影响呢? 首先,HTTPS证书通常在PinTrust这样的专业平…...
