mysql报Toomanyconnection的问题

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: mysql报Toomanyconnection的问题

产生问题的原因是MySQL的Sleep进程占用了大量的连接。

解决如下:

1、查看数据库最大连接数和当前连接数,发现很多sleep进程
 
最大连接数:show variables like '%max_connections%';
 
当前连接数:show full processlist;
 
2、经排查,产生这么多sleep进程的原因是数据库连接没有自动回收
 
需要在数据库连接池中添加 
 
removeAbandoned="true"
 
removeAbandonedTimeout="60"
 
logAbandoned="true"
MySQL的最大连接数,增加该值增加mysqld 要求的文件描述符的数量。如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。
 
数值过小会经常出现ERROR 1040: Too many connections错误,可以过’conn%’通配符查看当前状态的连接数量,以定夺该值的大小。
 
show variables like ‘max_connections’ 最大连接数
 
show  status like ‘max_used_connections’响应的连接数
 
mysql> show variables like 'max_connections';
 
+-----------------+-------+
 
| Variable_name   | Value |
 
+-----------------+-------+
 
| max_connections | 151   |
 
+-----------------+-------+
 
1 row in set (0.00 sec)
 
 
mysql> show status like 'max%connections';
 
+----------------------+-------+
 
| Variable_name        | Value |
 
+----------------------+-------+
 
| Max_used_connections | 152   |
 
+----------------------+-------+
 
1 row in set (0.00 sec)
 
max_used_connections / max_connections * 100% (理想值≈ 85%) 
 
如果max_used_connections跟max_connections相同 那么就是max_connections设置过低或者超过服务器负载上限了,低于10%则设置过大。
 
MySQL的max_connections参数用来设置最大连接(用户)数。每个连接MySQL的用户均算作一个连接,max_connections的默认值为100。本文将讲解此参数的详细作用与性能影响。
 
与max_connections有关的特性
 
MySQL无论如何都会保留一个用于管理员(SUPER)登陆的连接,用于管理员连接数据库进行维护操作,即使当前连接数已经达到了max_connections。因此MySQL的实际最大可连接数为max_connections+1;
 这个参数实际起作用的最大值(实际最大可连接数)为16384,即该参数最大值不能超过16384,即使超过也以16384为准;
 增加max_connections参数的值,不会占用太多系统资源。系统资源(CPU、内存)的占用主要取决于查询的密度、效率等;
 该参数设置过小的最明显特征是出现”Too many connections”错误;
 
调整max_connections参数的值
 
1.在配置文件my.cnf中设置max_connections的值
 
找到max_connections一行,修改为(如果没有,则自己添加),
上面的1000即该参数的值。
 
2、实时(临时)修改此参数的值
 
首先登陆mysql,执行如下命令:
 
 
 
 [root@www ~]# mysql -uroot -p
 
 
然后输入MySQL Root的密码。
查看当前的Max_connections参数值:
 
 
 
mysql> SELECT @@MAX_CONNECTIONS AS 'Max Connections';
 
 
设置该参数的值: 
 
 
 
mysql> set GLOBAL max_connections=1000;
 
 
(注意上面命令的大小写)
修改完成后实时生效,无需重启MySQL。
 
总体来说,该参数在服务器资源够用的情况下应该尽量设置大,以满足多个客户端同时连接的需求。否则将会出现类似”Too many connections”的错误。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
5月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
1394 11
|
Cloud Native Devops 持续交付
【云原生|云原生基础】什么是云原生?一文给你讲清楚!
【云原生|云原生基础】什么是云原生?一文给你讲清楚!
7557 1
|
关系型数据库 MySQL
mysql中有大量sleep进程的原因与解决办法
mysql中有大量sleep进程的原因与解决办法
1218 0
|
Java Spring 容器
SpringBoot读取配置文件的6种方式,包括:通过Environment、@PropertySource、@ConfigurationProperties、@Value读取配置信息
SpringBoot读取配置文件的6种方式,包括:通过Environment、@PropertySource、@ConfigurationProperties、@Value读取配置信息
2989 3
|
关系型数据库 MySQL 数据库连接
MySQL 1040 - Too many connections 如何解决?
【10月更文挑战第11天】MySQL 1040 - Too many connections 如何解决?
1537 1
|
网络协议 应用服务中间件 网络安全
阿里云环境中TLS/SSL握手失败的场景分析
TLS/SSL握手是一个相对复杂的过程,在阿里云环境中结合产品,安全等特性,可能会让TLS/SSL握手过程的不定性更多。本文来总结下各种握手失败的场景。
阿里云环境中TLS/SSL握手失败的场景分析
|
SQL 关系型数据库 MySQL
mysql too many connections 解决
mysql too many connections 解决
578 4
|
Ubuntu Linux
在Linux中, 如何创建一个快照?
在Linux中, 如何创建一个快照?
|
SQL Java 数据库连接
成功解决:was not registered for synchronization because synchronization is not active
这篇文章是关于解决Mybatis在同步过程中出现"was not registered for synchronization because synchronization is not active"错误的技术博客。
成功解决:was not registered for synchronization because synchronization is not active
|
JSON JavaScript 定位技术
Echarts 绘制地图(中国、省市、区县),保姆级教程!
Echarts 绘制地图(中国、省市、区县),保姆级教程!