mysql报Toomanyconnection的问题

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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”的错误。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
13天前
|
存储 关系型数据库 MySQL
Mysql全面总结
本文全面总结了MySQL的相关知识,涵盖思维导图、架构、存储引擎、数据类型、索引、查询、事务、锁机制、调优、分区与分表分库、主从复制及其他问题。MySQL采用插件式存储引擎架构,支持多种存储引擎,如InnoDB和MyISAM,每种引擎具备不同的特性。文章详细介绍了InnoDB和MyISAM的对比,包括事务支持、行级锁定、索引类型等。此外,还探讨了MySQL的查询优化、性能调优、主从复制等内容,适合数据库开发者和运维人员阅读。如涉及版权问题,请联系作者删除。
Mysql全面总结
|
1月前
|
Oracle 关系型数据库 MySQL
MySQL
MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一
|
1月前
|
数据采集 算法 关系型数据库
在 MySQL 中使用 SOUNDEX?
【8月更文挑战第6天】
63 0
在 MySQL 中使用 SOUNDEX?
|
存储 SQL 算法
盘点一下Mysql中的一些小知识(三)
盘点一下Mysql中的一些小知识(三)
88 0
盘点一下Mysql中的一些小知识(三)
|
SQL 关系型数据库 MySQL
2.初识MySQL
2.初识MySQL
70 0
|
SQL 关系型数据库 MySQL
MySQL5.7及以上 转 MySQL5.5
MySQL5.7及以上 转 MySQL5.5
152 0
|
关系型数据库 MySQL 数据库
MySQL(四)
MySQL(四),一起来学习吧。
|
SQL JSON Oracle
MySQL 8.0来了,逆之者亡...
MySQL 8.0来了,逆之者亡...
167 0
MySQL 8.0来了,逆之者亡...
|
关系型数据库 MySQL
|
关系型数据库 MySQL 数据库
mysql问题
唔,用脚本跑了下数据库,跑出来了好多,想着把无用的给删除掉,删除的时候遇到点问题。 这个数据库是在刚学数据库的时候创建的,后来wamp安安卸卸好多次,按理说数据库应该清空了,但是不知道为什么这个还在,但是也查看不了,也删除不掉就去百度了下...
1029 0