如何有效利用MYSQL的连接数

news2025/2/22 23:24:33

连接数配置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: 540000
      idle-timeout: 60000
      connection-timeout: 30000
      minimum-idle: 10
      maximum-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 值。

  • 为了确保所有类型的连接都遵循相同的空闲超时规则,建议同时设置这两个参数。

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

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

相关文章

单片机 Bootloade与二进制文件的生成

单片机的 Bootloader 是一种特殊的程序,负责在单片机上电后初始化硬件、更新用户应用程序(固件),并将控制权移交给用户程序。以下是其运行机制和关键流程的详细说明: 1、单片机 Bootloader 的核心作用 固件更新&…

MySQL数据库(3)—— 表操作

目录 一,创建表 1.1 创建表的SQL 1.2 演示 二,查看表 三,修改表 四,删除表 常用的表操作会涉及到两种SWL语句 DDL(Data Definition Language)数据定义语言:建表、改表、删表等&#xff0…

Springboot + Ollama + IDEA + DeepSeek 搭建本地deepseek简单调用示例

1. 版本说明 springboot 版本 3.3.8 Java 版本 17 spring-ai 版本 1.0.0-M5 deepseek 模型 deepseek-r1:7b 需要注意一下Ollama的使用版本: 2. springboot项目搭建 可以集成在自己的项目里,也可以到 spring.io 生成一个项目 生成的话,如下…

七星棋牌源码高阶技术指南:6端互通、200+子游戏玩法深度剖析与企业级搭建实战(完全开源)

在棋牌游戏行业高速发展的今天,如何构建一个具备高并发、强稳定性与多功能支持的棋牌游戏系统成为众多开发者和运营团队关注的焦点。七星棋牌全开源修复版源码 凭借其 六端互通、200子游戏玩法、多省区本地化支持,以及 乐豆系统、防沉迷、比赛场、AI智能…

HarmonyOS 开发套件 介绍 ——上篇

HarmonyOS 开发套件 介绍 ——上篇 在当今科技飞速发展的时代,操作系统作为智能设备的核心,其重要性不言而喻。而HarmonyOS,作为华为推出的全新操作系统,正以其独特的魅力和强大的功能,吸引着越来越多的开发者和用户的…

网络空间安全(1)web应用程序的发展历程

前言 Web应用程序的发展历程是一部技术创新与社会变革交织的长卷,从简单的文档共享系统到如今复杂、交互式、数据驱动的平台,经历了多个重要阶段。 一、起源与初期发展(1989-1995年) Web的诞生: 1989年,欧洲…

JUC并发—9.并发安全集合三

大纲 1.并发安全的数组列表CopyOnWriteArrayList 2.并发安全的链表队列ConcurrentLinkedQueue 3.并发编程中的阻塞队列概述 4.JUC的各种阻塞队列介绍 5.LinkedBlockingQueue的具体实现原理 6.基于两个队列实现的集群同步机制 1.并发安全的数组列表CopyOnWriteArrayList …

Baklib云智协同:数字资产赋能企业效能跃升

内容概要 在数字化转型加速的背景下,Baklib通过构建智能化的知识中台架构,为企业打造了贯穿知识采集、整合、应用的全链路解决方案。该平台以动态知识图谱为核心技术底座,支持文档、音视频、代码等20余种格式的数字资产全生命周期管理&#…

wordpress adrotate插件 文件上传漏洞

当你爆破进wordpress后台但权限不是管理员的时&#xff0c;如果你有adrotate插件操作权限可以用adrotate的文件上传功能get webshell 该漏洞需要AdRotate版本 < 5.13.3 第一步按顺序点击上传文件 在这里文件一定要压缩成zip格式&#xff0c;上传的时候也是上传这个zip 上…

Python爬虫入门到精通:从零开始的数据采集之旅

一、网络世界的"小蜘蛛":什么是爬虫? 想象一下,你是一只勤劳的小蜘蛛,每天在互联网这张巨大的网上爬来爬去。你不需要自己织网,只需要顺着别人织好的网络路径,把有价值的信息收集到自己的小篮子里。这就是爬虫最形象的比喻——一个自动化的信息采集程序。 Py…

Transformer解析——(四)Decoder

本系列已完结&#xff0c;全部文章地址为&#xff1a; Transformer解析——&#xff08;一&#xff09;概述-CSDN博客 Transformer解析——&#xff08;二&#xff09;Attention注意力机制-CSDN博客 Transformer解析——&#xff08;三&#xff09;Encoder-CSDN博客 Transforme…

毕业项目推荐:基于yolov8/yolov5/yolo11的番茄成熟度检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

Blaze RangePartitioning 算子Native实现全解析

引言&#xff1a;本文将全面且深入地解析Blaze RangePartitioning算子的Native实现过程。相较于原生Spark&#xff0c;RangePartitioning的Native实现在执行时间上达到了30%的显著下降&#xff0c;同时在资源开销方面节省了高达76%。这一改进大幅降低了运行成本&#xff0c;展现…

1、Window Android 13模拟器 将编译的映像文件导入Android Studio

1、环境准备 编译环境&#xff1a;Ubuntu-18.04.5编译版本&#xff1a;android13-release下载地址&#xff1a;清华大学开源软件镜像站AOSP # 下载repo # 同步代码&#xff1a;repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android13-r…

MTK-Android13-包安装器PackageInstaller 静默安装实现

目的 我们最终是为了搞明白安装的整个流程。一方面通过安卓系统自带的包安装器来了解PMS 安装流程&#xff1b;另一方面熟悉框架层Framework 针对Android apk 安装流程。 前两篇文章分析了PackagerInstaller 安装流程。 Android13-包安装器PackageInstaller-之apk安装跳转 An…

基于ffmpeg+openGL ES实现的视频编辑工具-opengl相关逻辑(五)

在我们的项目中,OpenGL ES 扮演着至关重要的角色,其主要功能是获取图像数据,经过一系列修饰后将处理结果展示到屏幕上,以此实现各种丰富多样的视觉效果。为了让大家更好地理解后续知识,本文将详细介绍 OpenGL 相关代码。需要注意的是,当前方案将对 OpenGL 的所有操作都集…

【数据库系统概论】第第12章 并发控制

12.1 并发控制概述 并发控制是指数据库管理系统&#xff08;DBMS&#xff09;通过控制多个事务同时执行&#xff0c;保证数据的一致性和隔离性&#xff0c;避免事务间的相互干扰。 事务串行执行不能充分利用系统资源 并发执行的优点&#xff1a;能够减少处理机的空闲 时间&a…

HTML应用指南:利用GET请求获取全国泸溪河门店位置信息

随着新零售业态的快速发展,门店位置信息的获取变得越来越重要。作为新兴烘焙品牌之一,泸溪河自2013年在南京创立以来,一直坚持“健康美味,香飘世界”的企业使命,以匠人精神打造新中式糕点。为了更好地理解和利用这些数据,本篇文章将深入探讨GET请求的实际应用,并展示如何…

基于 JavaWeb 的 Spring Boot 调查问卷管理系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

Unity shader glsl着色器特效之 模拟海面海浪效果

一个简单的海浪效果&#xff0c;通过波的叠加实现水面起伏的动效&#xff0c;根据波峰斜率来为浪花着色&#xff0c;再根据法线贴图和水花贴图来和调整uv的平滑移动来增强海浪移动的细节。如果需要更逼真的效果可以考虑在满足浪花触发的地方添加粒子系统 前置效果图 因为是很久…