`

数据库连接数过多,页面打不开

阅读更多
当用户收到链接数告警时,意味着连接数即将达到该实例的上限。如果实例的连接数超过了实例规定的连接数,将无法创建新的连接,这个时候会影响用户的业务;

Mysql 的连接通常是一个请求占用一个连接,如果该请求(update,insert,delete,select)长时间没有执行完毕,则会造成连接的堆积,迅速的消耗完数据库的连接数,这个时候技术支持人员就要登录数据库进行排序,看看到底是那些sql 占用了连接;
问题排查步骤:

1 、查看实例配置:
可登录RDS控制台“详情与配置”查看实例额定链接数,我们假设最高支持1500个链接

2、 查看当前的连接数:
1)可登录RDS控制台“性能监控”查看实例当前链接数。
2)或者登录数据库查询当前连接,可以使用同步帐号或者用户的业务帐号登录数据库,执行show processlist;
[root@r41d05036.xy2.aliyun.com ~]# mysql -uroot -h127.0.0.1 -P3020 -e "show processlist"|wc -l
1262
可以看到该实例已经有1262 个连接

3、排查是什么动作占用了这些连接:
[root@r41d05036.xy2.aliyun.com ~]# myql -uroot -h127.0.0.1 -P3018 -e "show full processlist">/tmp/1.log
root@r14d11038.dg.aliyun.com # more /tmp/1.log
615083 my_db 223.4.49.212:54115 my_db Query 100 Sending data
INSERT INTO tmp_orders_modify (oid, tid, seller_id, `status`, gmt_create, gmt_modified)
SELECT oid, tid, seller_id, `status`, gmt_create, gmt_modified
FROM sys_info.orders WHERE
gmt_modified < NAME_CONST('v_last',_binary'2012-12-24 10:33:00' COLLATE 'binary') AN
D gmt_modified >= NAME_CONST('v_curr',_binary'2012-12-24 10:32:00' COLLATE 'binary')
621564 my_db 223.4.49.212:46596 my_db Query 3890 sorting result
insert into tmp_trades(sid, d, h, tc, tm, tp, ic, new_tp, old_tp)
select a.seller_id as sid,
…………..
from orders_1 as a where seller_id =1 and is_detail = '1'
and created < date_format('2012-12-24 10:35:00', '%Y-%m-%d %H:00:00')
and gmt_create < date_format('2012-12-24 10:40:00', '%Y-%m-%d %H:%i:00')
and gmt_create >= date_format('2012-12-24 10:35:00', '%Y-%m-%d%H:%i:00')
group by d, h
order by d
……………….此处省略其他sql

4、分析连接占用的原因:
可以看到数据库中有长时间没有执行完成的sql,一直占用着连接没有释放,而应用的请求一直持续不断的涌入数据库,这个时候数据库的连接很快就被使用完;所以这个时候需要排查为什么这些sql 为什么长时间没有执行完毕,是索引没有创建好,还是sql执行耗时严重。

第一条sql:
INSERT INTO tmp_orders_modify (oid, tid, seller_id, `status`, gmt_create, gmt_modified)
SELECT oid, tid, seller_id, `status`, gmt_create, gmt_modified
FROM sys_info.orders WHERE
gmt_modified < NAME_CONST('v_last',_binary'2012-12-24 10:33:00' COLLATE 'binary') AN
D gmt_modified >= NAME_CONST('v_curr',_binary'2012-12-24 10:32:00' COLLATE 'binary')
是用户从sys_info 数据库中拉取订单到自己的业务库中那个,但是在orders 表上没有gmt_modified 的索引,导致了全表扫描;(更加详尽的排查方法可以参考:为什么我的RDS慢了);

第二条sql:
看到这条sql 正在进行sorting 排序,为什么导致sql 长时间sorting,通常情况下为排序的结果集太大导致排序不能在内存中完成,需要到磁盘上排序,进而导致了性能的下降;解决的办法就是降低排序的结果集,常用的手段是利用索引的有序性,消除排序,或者建立适当的索引减小结果集;我们可以看到第二条sql 的排序字段非常的复杂,但是我们可以看到查询的时间范围是很短,只有5 分钟的时间间隔,这个时候就可以在gmt_create上创建一个索引,过滤掉大部分的记录:
Alter tale order_1 add index ind_order_gmt_create(gmt_create);
(该用户对orders 进行了分表,大概有50 多张分表需要添加gmt_create 字段的索引);

5、经过上面两步的优化后,用户实例恢复正常:io 情况和connection 情况,可再次登陆RDS控制台查看连接数。
分享到:
评论

相关推荐

    WML信息查询与后端信息发布系统实现 -WML信息查询设计 -java -(报告+源码)

    数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大...

    iwms网站管理系统 5.3.2.rar

    修正sql版数据库连接未关闭造成IIS不稳定 修正sql版全文检索时多关键字可能出错 修正系统发送出的邮件乱码 修正sql版站内消息最近联系人无法取出 讨论区右侧分类中“全部”从代码中移入language.xml 生成分类...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。 该在线博客系统服务器端如果需要布置到其他主机上,则该主机必备条件如下: 1. ...

    SQLServer2008查询性能优化 2/2

    11.2.1 限制选择列表中的列数 283 11.2.2 使用高选择性的WHERE子句 284 11.3 有效地使用索引 284 11.3.1 避免不可参数化的搜索条件 285 11.3.2 避免WHERE子句列上的算术运算符 289 11.3.3 避免WHERE子句列上的...

    SQLServer2008查询性能优化 1/2

    11.2.1 限制选择列表中的列数 283 11.2.2 使用高选择性的WHERE子句 284 11.3 有效地使用索引 284 11.3.1 避免不可参数化的搜索条件 285 11.3.2 避免WHERE子句列上的算术运算符 289 11.3.3 避免WHERE子句列上的...

    在线考试系统网站源码

    一、源码描述 这是一款相对比较完整的在线考试系统,采用了典型的三层架构模式,这次主要修改了 源码当中的一些bug,该源码可以作为课程设计使用,也比较适合... 3、默认数据库连接字符串在webconfig配置文件中修改。

    问答吧(自带伪原创引擎的问问小偷) V1.01.rar

    可以从下面地址下载,如果下载不了,请从QQ邮箱下载.QQ邮箱提示用户过多可先保存至QQ个人中转站即可   功能简介: 1.采用独有的分词引擎,完全匹配baidu和google的习惯。 2.内容经过打乱和伪原创处理,收录更多。...

    IIS6.0 IIS,互联网信息服务

    多个IP对应多个Web站点 如果本机已绑定了多个IP地址,想利用不同的IP地址得出不同的Web页面,则只需在“默认Web站点”处单击右键,选“新建→站点”,然后根据提示在“说明”处输入任意用于说明它的内容(比如为“我...

    桃源相册管理系统v2.3

    详细介绍 - [ 桃源相册管理系统 v2.2 官方免费版 ] 《桃源相册管理系统》是一款专业的图片存储展示平台,可用于图片的共享、交流、管理、服务等,适合拥有大量图片的网站,能够...数据库连接字符串在web.config文件中。

    Python Cookbook

    10.15 连接一个正在运行的Internet Explorer实例 392 10.16 读取Microsoft Outlook Contacts 393 10.17 在Mac OS X中收集详细的系统信息 396 第11章 用户界面 400 引言 400 11.1 在文本控制台中显示进度条 402...

    x-scan-v3.3-cn

    Domain 集WHOIS查询、上传页面批量检测、木马上传、数据库浏览及加密解密于一体. SuperScan 强大的TCP端口扫描器、Ping和域名解析器! Hscan 这是款运行在WinNT/2000下的漏洞扫描工具,有GUI以及命令行两种扫描方式...

    发货100文章付费阅读系统(含小程序)-PHP

    【常见问题1】数据库连接错误:(1)64位系统的用户请在iis应用程序池开启对32位的支持(2)网站目录给users用户完全控制的权限(3)C:\windows\temp文件夹给everyone完全控制的权限 【常见问题2】未安装直接显示...

    软件工程知识点

    (1)用户调查是最基本的用户需求信息收集方法,比较常用的调查方法包括:访谈用户、开座谈会、问卷调查、跟班作业、收集用户资料。 (2)需求原型可被用来解决用户对软件系统在需求认识上的不确定性。一般情况下,...

    数据挖掘18大算法实现以及其他相关经典DM算法

    PageRank算法最早产生于Google,核心思想是通过网页的入链数作为一个网页好快的判定标准,如果1个网页内部包含了多个指向外部的链接,则PR值将会被均分,PageRank算法也会遭到LinkSpan攻击。详细介绍链接 HITS HITS...

    Linux操作系统基础教程

    要的是,Linux 上有公认的 C 语言世界最好的编译器 gcc,如果你想得到一个效率更高的开 发环境(并不一定是最友好的,但一定是最强大的),我建议你一定要好好的熟悉一下 Linux。 三.如何得到Linux? 据我所知...

Global site tag (gtag.js) - Google Analytics