MySQL 8.0.17 “Too Many Connections” 排查指南

MySQL 8.0.17 “Too Many Connections” 排查与优化指南

在 MySQL 8.0.17 中,当出现“Too many connections”错误时,通常意味着数据库连接数已达上限。这不仅会影响应用性能,还可能导致连接池(如 Druid)无法获取新连接。以下是一个清晰简洁的排查与优化指南,帮助你快速解决问题。

一、现象

MySQL 返回错误码 1040,状态码 08004,提示“Too many connections”。Druid 连接池无法获取连接。

java.sql.SQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"

二、快速确认

  1. 登录 MySQL

    -- 当前允许的最大连接数
    SHOW VARIABLES LIKE 'max_connections';-- 当前已打开的连接数
    SHOW STATUS LIKE 'Threads_connected';-- 历史峰值
    SHOW STATUS LIKE 'Max_used_connections';
    
  2. 查看当前连接明细

    SHOW PROCESSLIST;
    

三、临时方法

  1. 临时提高连接上限
    SET GLOBAL max_connections = 300;   -- 根据内存评估
    

四、服务器端配置

  1. 修改配置文件(my.cnf / my.ini)

    [mysqld]
    max_connections = 300          # 建议 300~500 起步
    wait_timeout    = 300          # 5 分钟后回收空闲连接
    interactive_timeout = 300
    

    重启 MySQL 使配置生效,或使用:

    SET PERSIST max_connections = 300;
    
  2. 启用自适应参数(单机专用服务器推荐)

    [mysqld]
    innodb_dedicated_server = ON
    

五、应用侧检查

  1. 检查连接池配置

    spring.datasource.druid.max-active=50
    spring.datasource.druid.initial-size=5
    spring.datasource.druid.min-idle=5
    spring.datasource.druid.max-wait=3000
    spring.datasource.druid.remove-abandoned=true
    spring.datasource.druid.remove-abandoned-timeout=60
    spring.datasource.druid.log-abandoned-connections=true
    
  2. 确保资源正确关闭
    在代码中确保 ConnectionStatementResultSetfinally 块中关闭,防止连接泄露。

六、业务侧检查

  1. 监控业务流量

    • 检查业务高峰期的流量,确认是否有异常流量导致连接数激增。
    • 使用监控工具(如 Prometheus、Grafana)实时监控业务流量。
  2. 分析业务逻辑

    • 检查业务代码中是否有不必要的数据库连接操作。
    • 优化业务逻辑,减少不必要的数据库请求。

七、高并发优化

  1. 引入连接代理

    • 使用 ProxySQL、MySQL Router 或 ShardingSphere-Proxy 进行连接复用。
  2. 读写分离

    • 使用 InnoDB ReplicaSet 快速拉起只读实例,分担主库压力。
  3. 关闭死锁检测(极端写场景)

    SET GLOBAL innodb_deadlock_detect = OFF;
    

八、一键检查脚本(Linux)

mysql -uroot -p'密码' -e "
SELECT @@max_connections AS max_conn,VARIABLE_VALUE   AS threads_conn
FROM performance_schema.global_status
WHERE VARIABLE_NAME='Threads_connected';
"

九、小结流程

发现 1040 → 查看 max_connections / Threads_connected → 临时 SET GLOBAL → 配置 my.cnf → 重启 → 检查应用池设置 → 检查业务逻辑 → 长期监控

十、总结

通过以上步骤,你可以快速定位并解决 MySQL 8.0.17 的“Too many connections”问题。关键步骤包括快速确认问题、临时提高连接上限、持久化配置、检查应用和业务逻辑,以及优化高并发场景。希望这份指南能帮助你高效解决问题。

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

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

相关文章

GEO优化服务:智能时代营销新赛道的中国引领者——全球行业格局与发展趋势观察

随着全球人工智能技术的迅猛发展,以GPT-5、Claude Opus以及我国的DeepSeek Divine、豆包等为代表的新一代生成式AI搜索引擎,正深刻改变着信息获取与商业决策模式。用户通过直接向AI提问获取整合答案的行为日益普遍,传统搜索引擎的流量入口地位…

全面解析主流AI模型:功能对比与应用推荐

全面解析主流AI模型:功能对比与应用推荐 在当前人工智能技术飞速发展的背景下,市面上涌现了多种具备不同能力的AI模型。本文将系统梳理主流模型的特性、对比其核心能力,并结合实际场景推荐高效、稳定的API服务(如https://api.aaa…

【Nacos知识】Nacos 作为注册中心的客户端配置详解

Nacos 作为注册中心的客户端配置详解Nacos 作为注册中心的客户端配置详解一、核心配置项全景图二、基础连接配置1. 服务端地址配置2. 命名空间配置3. 服务分组配置三、服务注册配置1. 服务元数据配置2. 网络位置配置3. 集群与权重配置四、健康检查配置1. 心跳参数配置2. 健康检…

TypeReference 泛型的使用场景及具体使用流程

简介 在 Java 中,泛型类型在运行时会被擦除。这意味着当我们使用泛型时,运行时无法直接获取到泛型的具体类型信息。例如,我们无法直接通过 Class 对象来获取一个泛型类型的类型参数。这在某些情况下可能会导致问题,特别是在我们需…

商超场景徘徊识别误报率↓79%!陌讯多模态时序融合算法落地优化

原创声明本文为原创技术解析文章,核心技术参数与架构设计引用自 “陌讯技术白皮书(2024 版)”,所有技术描述均经过重写转换,无复制官网文案行为,严禁未经授权转载。一、行业痛点:徘徊识别的场景…

KubeBlocks AI:AI时代的云原生数据库运维探索

KubeBlocks AI:AI时代的云原生数据库运维探索 REF Auto-detect-failure 架构Auto-bug-detect测试 引言 传统的自动化运维诊断主要依赖基于规则的方法——无论是Ansible Playbooks的预定义脚本,还是Kubernetes Operator的固化逻辑,这些方法…

如何编译botan加密库?

Botan加密库支持2.x版本和3.x版本,其中3.x版本需要支持C20。0、下载源码git clone https://github.com/randombit/botan.gitcd botan切换分支到2.19.5版本git checkout 2.19.51、Windows编译Botan加密库1.1 配置生成MakefileRelease模式python configure.py --ccmsv…

Linux问答题:分析和存储日志

目录 1. RHEL 日志文件保存在哪个目录中? 2.什么是 syslog 消息和非 syslog 消息? 3.哪两个服务处理 RHEL 中的 syslog 消息? 4. 列举常用的系统日志文件并说明其存储的消息类型。 5. 简单说下日志文件轮转的作用 6.systemd-journald 服…

chapter05_从spring.xml读取Bean

一、简化Bean的注册 如果每次注册一个Bean,都要像上节一样,手动写PropertyValues相关的代码,那太复杂了,我们希望读取XML文件,自动注册Bean,这样对于使用者,甚至不知道有BeanDefinition的存在 二…

【数位DP】D. From 1 to Infinity

Problem - D - Codeforces 题目: 思路: 数位DP 数论 题目让我们求这个无限序列 123456789101112.... 的前 k 个数的数位和 题目看起来很不好求,事实上确实是这样的 我们可以先从简单问题开始 问题①. 求 k 位置对应着第几个数 那么显然…

gitlab、jenkins等应用集成ldap

gitlab、jenkins等应用集成ldap 文档 openldap安装 -添加条目gitlab、jenkins等应用集成ldap gitlab集成ldap gitlab版本:gitlab-jh-17.7.0 ldap版本:openldap-2.6.10 修改/etc/gitlab/gitlab.rb文件,编辑相关信息 gitlab_rails[ldap_en…

Unity中国小游戏行业沙龙:抖音小游戏平台分析与规划

目录 一、抖音小游戏市场全景分析 行业现状与发展趋势 行业发展关键议题 内容运营生态观察 二、平台技术架构与运营体系 用户复访与留存体系 技术支撑体系 三、平台激励与商业化政策 收益分成机制 资金服务升级 技术基础建设 四、生态合作与发展规划 开发者支持体系…

手机横屏适配方案

CSS自动旋转页面实战指南在移动端开发中,横屏适配是一个常见但棘手的问题。本文将深入解析一套完整的CSS横屏适配方案,让你的网页在手机旋转时自动调整布局,提供无缝的用户体验。一、横屏适配的重要性 随着移动设备使用场景的多样化&#xff…

蓝桥杯算法之基础知识(2)——Python赛道

1.循环里面套用递归,当递归执行return时,只会退出当前递归层2.不能一边遍历list 一边pop解决办法:倒序遍历解决或者创建新的列表去存储3.sqrt求出来的始终是小数形式,注意题目要求的结果有可能是整型你直接sqrt就提交,…

如何优雅解决 OpenCV 分段错误(Segfault):子进程隔离实战

在分布式数据平台(如 Databricks Spark)中跑视频处理任务时,你是否遇到过这种恶心的报错?Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe. : org.apache.spark.Spark…

Docker的六种网络模式(详解)

文章目录1. bridge(默认)2. host3. none4. container5. overlay6. macvlan7. 总结对比Docker 六种网络模式是容器网络的基础概念,不同模式决定容器与宿主机、外部网络、其他容器之间的通信方式。 1. bridge(默认) Br…

微服务流量分发核心:Spring Cloud 负载均衡解析

目录 理解负载均衡 负载均衡的实现方式 服务端负载均衡 客户端负载均衡 Spring Cloud LoadBalancer快速上手 常见的负载均衡策略 自定义负载均衡策略 LoadBalancer 原理 理解负载均衡 在 Spring Cloud 微服务架构中,负载均衡(Load Balance&#…

鸿蒙异步处理从入门到实战:Promise、async/await、并发池、超时重试全套攻略

摘要(介绍目前的背景和现状) 在鸿蒙(HarmonyOS)里,网络请求、文件操作、数据库访问这类 I/O 都是异步的。主流写法跟前端类似:Promise、async/await、回调。想把 app 做得“流畅且不阻塞”,核心…

【html2img/pdf 纯!纯!python将html保存为图片/pdf!!效果非常的棒!】

素材 a.png html card.html <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>固定样式卡片</title><style>/* 基础样式和页面居中 */body {font-family: "微软雅黑", "P…

带宽评估(三)lossbase_v2

一、优化方向 调整丢包恢复算法的参数:可以通过调整算法中的一些参数,如丢包恢复速率、丢包恢复阈值等,来优化算法的性能。 调整发送窗口大小:在固定丢包场景下,可以通过调整发送窗口大小来控制发送速率,从而减少丢包率。 a=fmtp:96 x-google-min-bitrate=300 二、Goo…