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

如何有效利用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 将周边靠陆地且相邻的陆地都变成海洋&#xff0c;然后再去重新遍历地图 统计此时还剩下的陆地 代码 #include <iostream> #include <vector> using namespace std; int dir[4][2] {-1, 0, …...

Spark 和 Flink

Spark 和 Flink 都是目前流行的大数据处理引擎&#xff0c;但它们在架构设计、应用场景、性能和生态方面有较大区别。以下是详细对比&#xff1a; 1. 架构与核心概念 方面Apache SparkApache Flink计算模型微批&#xff08;Micro-Batch&#xff09;为主&#xff0c;但支持结构…...

Unity结合Vuforia虚拟按键实现AR机械仿真动画效果

零、最终效果 待上传 一、资源准备 1、Vuforia Vuforia版本不能高于10.17.4&#xff08;往上的版本虚拟按键功能被删除&#xff09; 2、Unity Unity版本必须要高于2022.3.x&#xff0c;不然使用Vuforia插件时会出现bug 二、主要内容 1、添加虚拟按钮 2、为虚拟按钮设置…...

PL/SQL 异常处理

目录 一、命名的系统异常 1.常见命名的系统异常 2.预定义的系统异常数量以及描述 3.处理命名的系统异常的一般步骤 二、程序员定义的异常 1.概念 2.自定义异常的定义与抛出 3.自定义异常的处理 三、未命名的系统异常 1.概述 2.处理未命名的系统异常的方法 3.使用场景 …...

【自学笔记】Spring Boot框架技术基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Spring Boot框架技术基础知识点总览一、Spring Boot简介1.1 什么是Spring Boot&#xff1f;1.2 Spring Boot的主要特性 二、Spring Boot快速入门2.1 搭建Spring Boo…...

Redis 缓存穿透、击穿、雪崩:问题与解决方案

在使用 Redis 作为缓存中间件时&#xff0c;系统可能会面临一些常见的问题&#xff0c;如 缓存穿透、缓存击穿 和 缓存雪崩。这些问题如果不加以解决&#xff0c;可能会导致数据库压力过大、系统响应变慢甚至崩溃。本文将详细分析这三种问题的起因&#xff0c;并提供有效的解决…...

第一个CMAKE项目hello cmake

#注意&#xff01; 这篇文章是为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健康网_癌症 [健康之路]匠心仁术&#xff08;七&#xff09; 勇闯禁区 骶骨肿瘤切除术...

基于Django的购物商城平台的设计与实现(源码+lw+部署文档+讲解),源码可白嫖!

摘要 当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强&#xff0c;计算机技术对经济社会发展和人民生活改善的影响也日益突出&#xff0c;人类的生存和思考方式也产生了变化。传统购物管理采取了人工的管理方法&#xff0c;但这种管理方法存…...

使用快捷键高效管理 VSCode:提升工作效率,告别鼠标操作

如果你想提高工作效率&#xff0c;减少鼠标操作&#xff0c;掌握键盘快捷键是一个非常有效的方式。在编程过程中&#xff0c;熟练使用快捷键能够快速管理文件、标签页&#xff0c;节省时间并提升效率。比如&#xff0c;Ctrl P 和 Ctrl W 可以快速打开和关闭文件&#xff0c;而…...

【找工作】C++和算法复习(自用)

文章目录 C头文件自定义排序函数stl 算法数据结构树状数组 数学 自用随便记录 C 排序 stl 头文件 全能头文件&#xff1a; #include<bits/stdc.h>自定义排序函数 bool compare(const int &odd1,const int &odd2) {return odd1>odd2; }stl 枚举map map&…...

大语言模型基础

简介 AI大模型是“人工智能预训练大模型”的简称,包含了“预训练”和“大模型”两层含义,二者结合产生了一种新的人工智能模式,即模型在大规模数据集上完成了预训练后无需微调,或仅需要少量数据的微调,就能直接支撑各类应用。AI大模型主要分为三类:大语言模型、CV大模型…...

深入浅出机器学习:概念、算法与实践

目录 引言 机器学习的基本概念 什么是机器学习 机器学习的基本要素 机器学习的主要类型 监督学习&#xff08;Supervised Learning&#xff09; 无监督学习&#xff08;Unsupervised Learning&#xff09; 强化学习&#xff08;Reinforcement Learning&#xff09; 机器…...

2024年国赛高教杯数学建模A题板凳龙闹元宵解题全过程文档及程序

2024年国赛高教杯数学建模 A题 板凳龙闹元宵 原题再现 “板凳龙”&#xff0c;又称“盘龙”&#xff0c;是浙闽地区的传统地方民俗文化活动。人们将少则几十条&#xff0c;多则上百条的板凳首尾相连&#xff0c;形成蜿蜒曲折的板凳龙。盘龙时&#xff0c;龙头在前领头&#x…...

老游戏回顾:d2

游戏中玩家创建属于自己的角色&#xff0c;在一片片暗黑大地上奔跑、杀敌、寻宝、成长&#xff0c;最终打败统治各个大陆的黑暗势力&#xff0c;拯救游戏中的各个种族。 《暗黑破坏神II》的制作团队包括编程小组、运动物体制作小组和背景制作小组。游戏设计很大程度上是开放的&…...

【深度学习】Pytorch的深入理解和研究

一、Pytorch核心理解 PyTorch 是一个灵活且强大的深度学习框架&#xff0c;广泛应用于研究和工业领域。要深入理解和研究 PyTorch&#xff0c;需要从其核心概念、底层机制以及高级功能入手。以下是对 PyTorch 的深入理解与研究的详细说明。 1. 概念 动态计算图&#xff08;D…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

李沐--动手学深度学习--GRU

1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...