1040 - Too many connections

摘要:

MySQL 1040错误(too many connections)表明数据库连接数已达上限,通常由连接未及时释放或配置不合理导致。本文从临时恢复、永久配置、应用优化三个层面提供系统性解决方案。

快速恢复服务

查看当前连接状态

bash 复制代码
-- 查询最大连接数和当前连接数
SHOW VARIABLES LIKE 'max_connections';
SHOW STATUS LIKE 'Threads_connected';

临时调整连接数

bash 复制代码
-- 动态增加最大连接数(重启失效)
SET GLOBAL max_connections = 500;

清理空闲连接

bash 复制代码
-- 识别并终止空闲连接
SHOW PROCESSLIST;
KILL [连接ID];  -- 替换为实际连接ID

永久配置优化

修改配置文件

编辑my.cnf或my.ini文件,添加以下参数:

bash 复制代码
[mysqld]
max_connections = 500
wait_timeout = 300       # 非交互连接超时(秒)
interactive_timeout = 300 # 交互连接超时(秒)

重启服务生效

bash 复制代码
# Linux系统
sudo systemctl restart mysql

# Windows系统
net stop mysql && net start mysql

应用层优化策略

连接池配置示例

bash 复制代码
# Spring Boot配置(HikariCP)
spring:
  datasource:
    hikari:
      maximum-pool-size: 20
      idle-timeout: 30000

连接管理最佳实践

bash 复制代码
// Java示例:使用try-with-resources确保连接关闭
try (Connection conn = dataSource.getConnection();
     Statement stmt = conn.createStatement()) {
    ResultSet rs = stmt.executeQuery("SELECT * FROM users");
    // 处理结果集
}

高级优化方案

关键注意事项

  • 资源限制:每个连接约消耗256KB~2MB内存,max_connections值需根据服务器内存合理设置
  • 超时配置:缩短wait_timeout可加速释放空闲连接,但需避免误杀长查询
  • 紧急通道:MySQL默认保留max_connections+1个连接供root用户使用

完整操作流程

  1. 执行SHOW PROCESSLIST识别空闲连接
  2. 通过KILL ID清理异常连接
  3. 修改配置文件并重启服务
  4. 在应用层实施连接池和自动关闭机制
  5. 部署监控系统持续观察连接状态
相关推荐
闲云野鹤在人间9 小时前
MySQL|从理论、安装、备份到主从复制、MHA高可用详解
linux·运维·数据库·mysql·云计算
要开心吖ZSH11 小时前
MySQL 慢 SQL 排查操作手册-个人笔记版
java·笔记·sql·mysql·慢查询
Gl�ria12 小时前
MySQL 单机版 vs 高可用版:宕机排查 + 故障处理
mysql·adb·架构
Titan202413 小时前
MySQL索引学习笔记
笔记·学习·mysql
ClouGence13 小时前
数据库迁移工具 CloudCanal v6.5.0.0 发布:新增 TDSQL PostgreSQL 多条链路,支持 MongoDB 双向同步
数据库·mysql·mongodb
这个DBA有点耶15 小时前
Change Buffer深入:二级索引写入的隐形加速器与它的代价
数据库·mysql·代码规范
for_ever_love__15 小时前
MySQL 事务隔离级别讲透:MVCC、幻读与四个级别怎么选
java·数据库·mysql·事务·mvcc·不可重复读·幻读
这个DBA有点耶19 小时前
关系数据库管理系统选型指南:四步决策框架与主流产品技术路线对比
数据库·sql·程序人生·mysql·database·dba
我不会起名字32220 小时前
MVCC 快照读为什么读不到刚提交的数据:ReadView 的 4 条可见性规则
数据库·mysql·innodb·mvcc·事务隔离
螺蛳粉 螺蛳粉20 小时前
第四篇:Keepalived + MySQL 主从高可用实战
数据库·mysql·adb·keepalived·高可用