RDS MySQL 连接数满情况的处理
RDS MySQL 连接数满情况的处理
RDS MySQL 连接数满有2种情况
1. 空闲连接过多

原因:
应用使用长连接模式 - 对于长连接模式(比如Java应用),应用侧应该配置连接池。连接池的初始连接数设置过高,应用启动后建立多个到RDS实例空闲连接。如果出现连接数满(too many connections)不能连接的问题,请检查连接池是否启用了复用连接功能。
应用使用短连接模式 - 对于短连接模式(比如PHP应用),出现大量的空闲连接说明应用没有在查询执行完毕后显式的关闭连接。用户应该检查应用是否在页面查询结束后调用连接关闭方法主动显式关闭了到RDS实例的连接。
解决:
通过DMS或者Kill 命令来终止当前空闲会话,详细步骤请参考: RDS MySQL 如何终止连接
修改应用,长连接模式需要启用连接池的复用功能(建议也启用连接检测功能),具体设置请参考连接池配置文档。
修改应用,短连接模式需要在代码中查询结束后调用关闭连接的方法。
对于非交互模式连接,控制台=》参数设置=》设置 wait_timeout 参数为较小值,wait_timeout 参数控制非交互模式连接的超时时间(单位秒,默认值为 24小时 - 86400秒),当非交互式连接空闲时间超过wait_timeout指定的时间后,RDS实例会主动关闭(断开)连接。

对于交互模式连接,控制台=》参数设置=》设置 interactive_timeout 参数为较小值,interactive_timeout参数控制交互模式连接的超时时间(单位秒,默认值为 3小时 - 7200秒),当交互式连接空闲时间超过wait_timeout指定的时间后,RDS实例会主动关闭(断开)连接。

建议与说明:
在RDS MySQL 实例连接数完全打满的情况下,通过DMS或者其他方式是无法连接实例的;因此对于长连接模式,建议连接池的最大连接数要略小于实例规格的连接数限制,比如保留10个连接给DMS或其他管理操作使用。当发生无法连接的情况时,建议先在控制台修改wait_timeout参数为较小值,促使RDS实例主动关闭空闲时间超过阀值的连接。
通常情况下,应用到RDS实例会采用非交互模式;具体采用哪个模式需要查看应用的连接方式配置,比如 PHP 通过传递 MYSQL_CLIENT_INTERACTIVE 常量给 mysql_connect()函数即可开启连接的交互模式。
RDS MySQL 作为服务器,被动的接收来自应用或客户端的连接,处理应用或客户端提交的查询或命令并返回结果。RDS 实例自身是不会主动发起连接的。
注:在出现大量空闲连接之前,有可能会出现瞬间连接数过多的情况,由于RDS作为服务器被动接收连接,通常情况下是应用SQL未优化导致的问题,因此需要从SQL优化入手来根本解决这个问题。
2. 活动连接过多

原因:
锁等待导致活动连接数增加(包括 InnoDB 锁等待、MyISAM表级锁等待、表元数据锁等待)
CPU使用率高导致活动连接数增加
IOPS使用率高导致活动连接数增加
解决:
InnoDB锁等待处理,请参考:RDS MySQL InnoDB 锁等待和锁等待超时的处理
MyISAM表级锁等待处理,请参考:RDS MySQL MyISAM 表级锁等待的产生和处理
表元数据锁等待,请参考:RDS MySQL 表上 Metadata lock 的产生和处理
CPU 使用率高导致活动连接数增加的处理,请参考:RDS MySQL CPU使用率高情况的原因和解决
IOPS使用率高导致活动连接数增加,请参考:RDS MySQL IOPS 使用率高的原因和处理
如问题还未解决,请联系售后技术支持。
RDS MySQL 连接数满情况的处理的更多相关文章
- 连接数从异常到 300 到 5(RDS MySQL 的一个大坑•后记)
在 <记 RDS MySQL 的一个大坑> 中,我提到遇到 User juxxxxxxxxxx already has more than 'max_user_connections' a ...
- RDS MySQL 空间问题的原因和解决
来源:https://help.aliyun.com/knowledge_detail/41739.html RDS MySQL 空间问题的原因和解决 更新时间:2016-07-22 17:20:14 ...
- 记阿里云 RDS MySQL 的一个大坑
花了一个下午的时间,终于把一个阿里云 RDS MySQL 的一个大坑填上了,解决方法令人匪夷所思!绝对会让各位看官感到大吃一惊,阿里云 RDS MySQL 居然有这样 xx 的大坑! 问题 最近应业务 ...
- 实测:云RDS MySQL性能是自建的1.6倍
1. 摘要 基于之前写的「云厂商 RDS MySQL 怎么选」的文章,为了进一步了解各云厂商在RDS MySQL数据库性能上的差异,本文将对自建MySQL.阿里云.腾讯云.华为云和AWS 的 RDS ...
- RDS MySQL 全文检索相关问题的处理
RDS MySQL 全文检索相关问题 1. RDS MySQL 对全文检索的支持 2. RDS MySQL 全文检索相关参数 3. RDS MySQL 全文检索中文支持 3.1 MyISAM 引擎表 ...
- RDS MySQL InnoDB 锁等待和锁等待超时的处理
https://help.aliyun.com/knowledge_detail/41705.html 1. Innodb 引擎表行锁等待和等待超时发生的场景 2.Innodb 引擎行锁等待情况的处理 ...
- MySQL MySql连接数与线程池
MySql连接数与线程池 by:授客 QQ:1033553122 连接数 1. 查看允许的最大并发连接数 SHOW VARIABLES LIKE 'max_connections'; 2. 修改最 ...
- MySQL连接数超过限制的解决方法
最近网站出现 User 数据库名称 has already more than 'max_user_connections' active connections 的报错,网站瘫痪.有必要研究下这个问 ...
- 如何实现MySQL数据库使用情况的审计
如何实现MySQL数据库使用情况的审计 最佳答案 mysql的审计功能 mysql服务器自身没有提供审计功能,但是我们可以使用init-connect + binlog的方法进行mysql的操 ...
随机推荐
- 全排列 UVA 11525 Permutation
题目传送门 题意:训练指南P248 分析:逆向考虑,比如一个全排列:7345261,它也可以表示成题目中的形式,第一个数字7是由6 * (7 - 1)得到的,第二个数字3有2 * (7 - 2)得到, ...
- ajax 异步交互
<script> $(function(){ $("#sub").click(function () { $.ajax( ...
- 疯狂java学习笔记之面向对象(五) - 封装、继承、多态
一.封装: 封装的概念: - 合理的隐藏:隐藏不想被外界操作的Field.方法.构造器 - 合理的暴露:一般就是希望给别人调用的方法 e.g:显示器(按键暴露出来操作,但实际的东西/细节方法被隐藏起来 ...
- ie不支持getElementsByClassName的解决办法
目前可以这么解决,判断浏览器支不支持这个方法,如果支持就不管:如果不支持,就在document对象里加入getElementsByClassName这个方法,按兴趣的朋友可以了解下 if (navig ...
- jQuery 基本过滤选择器注意点
$(".add_shuxing_ul > li:first") 选择class为add_shuxing_ul 的子级li元素的第一个li $(".add_shux ...
- 二 、打开地图《苹果iOS实例编程入门教程》
该app为应用的功能为给你的iPhone打开google地图有效地址连接 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Si ...
- PHP 7 测试用例(转)
性能改善:PHP 7高达两倍快的PHP 5.6 显著减少内存使用 抽象语法树 一致的64位支持 改进的异常层次结构 许多转化为异常致命错误 安全随机数发生器 删除旧的和不支持的SAPIs和扩展 空合并 ...
- maven的简单说明
groupId: 项目组ID,项目坐标的核心元素. version: 项目版本,项目坐标的核心元素. description: 项目的描述信息. organization: 项目的组织信息.incep ...
- [转载]学习VC MFC开发必须了解的常用宏和指令————复习一下
1.#include指令 包含指定的文件 2.#define指令 预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善.背后一长串”的宏,它本身并不在编译过程中进行,而 ...
- PHP如何关闭notice级别的错误提示
1.在php.ini文件中改动error_reporting改为:error_reporting=E_ALL & ~E_NOTICE2.如果你不能操作php.ini文件,你可以使用如下方法在你 ...