MySQL的max_user_connections拒绝连接的一次踩雷经验
近期线上的数据遇到一个问题,最终原因为max_user_connections和max_connections的一个bug导致,具体过程如下
现象
前端页面不断的出现错误页面。
排查处理过程
按照数据库的标准排查流程,首先看延迟,慢查询,连接数,这三个最容易出现问题的地方。
第一时间发现有较大的延迟超过800s,经过分析慢查询日志发现是一条DELETE SQL没有使用索引导致全表查询引发的对服务器IO性能消耗过多导致的。
同事前端的兄弟们也发现这个业务的调用量徒增几百倍,从一个没什么访问量的业务变为每秒上万访问量的业务。
故,我们初步推断,这是由于访问量激增引发的平时不明显的问题暴露出来导致的故障。
但是,第二天我们将索引添加之后,效果很好,慢查询日志已经看不到问题SQL了,但是故障现象还在发生,只不过频次降低。
基于以上的信息,我们认为不是数据库的问题,而是突增的流量已经超过系统承载范围,需要进行限流。于是就对接口API做了修改。但是经过一天的观察之后,问题的现象仍在稳步增加,并没有消失。这时候,通过添加细粒度的应用日志才得以发现,有很多的more than max_user_connections的报错。而我们的配置是max_user_connections=1024,max_connections=4096。从监控看,从来没有超限的现象发生。为了处理故障,先临时将max_user_connections提高到2048,问题得以解决,经过观察也不再复现,看来问题就出现在连接数上。但是为什么从监控上看连接数并没有超过max值呢?
问题定位
经过后续的排查,发现这是由于MySQL5.5.12的一个bug导致,具体详见:http://bugs.mysql.com/bug.php?id=65104
基本的意思是,当max_user_connections设置一个非0的数值时,在一些情况下,这个数值并不会被MySQL Server认可,就算连接数还有空闲,也会拒绝掉部分连接请求。
这样,上述的情况就可以得到解释了。那么如何进行处理呢? 官方的解释是需要升级MySQL版本,在5.5.25以下的版本都会发生,最好就直接升级到MySQL5.5的最终版本5.5.31最好。(又要各种切换主库了,头疼,这是题外话)
同时,后期看历史数据,其实已经有很明显的现象表明当时数据库连接有异常,只是被我们忽略了,这是需要检讨的地方。
从下图可以看出,我们出现问题的时间段上,有比较明显的abort_connectioning的曲线,当我们解决完毕之后又消失了,这就说明在大量abort出现的时候,一定是存在连接数的问题,有可能是MySQL自身,也有可能是程序段没有close()导致的连接数浪费。这都需要具体分析。

经验总结
首先,从技术层面,对abort_connections的理解程度和重视程度都需要提高。
其次,从流程和问题定位方案,监控和日志的重要性就不必细说了,只是在多强调2点。第一,监控的点要覆盖全面,如果监控只有连接数二没有abort的数值,那么下次出现诡异的bug问题,仍然还会茫然无头绪。第二,错误日志才是问题定位的根本,除了MySQL,apache,php的错误日志外,应用程序的错误日志同样重要,需要提高重视程度。只有日志反应的问题才是真实存在的问题,而不能光靠经验就推测,运维确实是个吃经验的活,但是也不能犯经验主义的错误。
最后,从这个故障上来说,关于透明代理、反垃圾等等限流和安全措施方面其实还是有很多地方可以做的,但是不涉及数据库,不再详细分析了。
MySQL的max_user_connections拒绝连接的一次踩雷经验的更多相关文章
- 解决 phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接 问题
phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接.您应该检查配置文件中的主机.用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致. 问题解决办法: 修改co ...
- phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。
phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接.您应该检查配置文件中的主机.用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致. 错误产生原因: 修改了 ...
- Mac OS本地,XAMPP,出现 “phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接”错误
phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接.您应该检查配置文件中的主机.用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致. 原因一:有可能是因为修改 ...
- phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接 解决办法
phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接.您应该检查配置文件中的主机.用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致. 原因有可能是因为修改了m ...
- phpmyadmin连接MySQL服务器被拒绝
显示: phpMyAdmin 尝试连接到MySQL服务器,但服务器拒绝连接.您应该检查配置文件中的主机.用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致. 原因: 可能是修改了 ...
- phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接
phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接--解决方法 phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接.您应该检查配置文件中的主机.用户名和 ...
- MySQL优化二(连接优化和缓存优化)
body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...
- 安装好mysql后允许远程连接
安装好mysql后允许远程连接 http://blog.sina.com.cn/s/blog_3eba8f1c0100tsox.html http://blog.csdn.net/zxyvb/arti ...
- Sqoop拒绝连接错误
使用Sqoop远程连接MySQL导入数据到HBase数据库: sqoop import --driver com.mysql.jdbc.Driver --connect "jdbc:mysq ...
随机推荐
- Linux端口占用
1.netstat netstat -anp | grep 23232 Sample: [root@BICServer 0825]# netstat -anp | grep 23232 tcp 0 0 ...
- 42.Trapping Rain Water---dp,stack,两指针
题目链接:https://leetcode.com/problems/trapping-rain-water/description/ 题目大意:与84题做比较,在直方图中计算其蓄水能力.例子如下: ...
- Java Eclipse 配置
1.清除多余记录 最近用eclipse打包jar的时候,需要指定一个main函数.需要先运行一下main函数,eclipse的Runnable JAR File Specification 下的Lau ...
- 你需要知道的Nginx配置二三事
做服务端开发的,工作中难免会遇到处理Nginx配置相关问题.在配置Nginx时,我一直本着“照葫芦画瓢”的原则,复制已有的配置代码,自己修修改改然后完成配置需求,当有人问起Nginx相关问题时,其实仍 ...
- plsql例子
create or replace procedure find_difference(db_link in varchar2) is /* 比对两套环境建表脚本差异,以224环境为主 当前环境,db ...
- Valid Parentheses——栈经典
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- jmeter------线程组(默认)
Jmeter中的采样器必须要基于线程组. 一.添加线程组 在测试计划上右键,然后选择,如下图: 二.线程组界面 三.线程组界面配置说明 1.名称:线程组自定义名称: 2.注释:添加的一些备注说明信息, ...
- codeforce 1A Theatre Square
A. Theatre Square Theatre Square in the capital city of Berland has a rectangular shape with the siz ...
- python操作json数据格式--基础
非常基础的json库的用法,后续添加数据格式.编码等内容 参考文章 json进阶 Python的json模块提供了一种很简单的方式来编码和解码JSON数据. 其中两个主要的函数是 json.dumps ...
- 易普优APS高级计划排程系统系列提纲:行业知识,业务建模,排程算法,计划可视化,平台框架,案例分享
专注于高级计划排程系统研发与实施10来年了,国内外各种APS软件基本都研究过,这里列个提纲主要从6个方面跟大家一起讨论分享,欢迎大家鼓掌或拍砖 易普优APS高级计划排程系统系列001:行业知识,APS ...