MySQL--异常的客户端连接

简介: -------------------------------------------------------------------------------------------------正文-----------------------------------...
+关注继续查看
-------------------------------------------------------------------------------------------------正文---------------------------------------------------------------------------------------------------------------
背景1:
程序反馈数据库出现了max_connection的错误, 导致client无法连接到db;
根据程序的说法, 使用大量的连接是历史遗留问题, 遂调高了max_connection的参数;

背景2:
另外一个业务的程序发现数据库中出现了一些连接时间很长的sleep连接, 但是应用层已经把所有的进程全部重启了;
如截图:


10s多的是重启后新建的连接, 3000左右的是异常链接;

场景:
未搭建复现场景;

分析:
第一时间考虑的就是应用服务器上还有遗漏的进程没有关闭, 所以导致了这些连接一直保持着;
程序在检查之后一再保证确实没有连接数据库的进程以后, 开始顺着网络链路进行分析;

首先让程序停掉了应用层的所有进程, 然后发现MySQL上确实只留下了持续好几千秒的sleep连接;
在DB的服务器上也能看到EST的TCP/IP连接, 确认了连接还是存在的;
然后检查了MySQL前端的haproxy服务器, 比对了一下端口, 也找到了haproxy上的连接;
反查haproxy的连接信息, 找到了应用服务器的IP和对应的端口, 如截图:



奇怪的是, 应用服务器上并没有端口38710的这些信息, 新创建的端口都已经到48000以后去了;
那么haproxy上, 这些与不存在端口的连接到底是什么原理?

和网络部分的同事说明情况以后, 最终给出了一个解释:
client在连接DB的时候会经由LVS转发到haproxy, 其中LVS的超时时间设置比haproxy短;
因此client在保持空闲一段时间以后, 再访问LVS时, LVS会告知client重新向haproxy发起新的连接,
haproxy上旧的连接因为还没有到haproxy的超时时间, 所以也没有断开, 那么在查询的时候就会出现这种没有源头的链接;

处理方式:
在发现了这个问题的haproxy实例上, 调整了haproxy的超时时间, 比LVS略高, 之后的几天内, 这种连接不再出现;
且haproxy断开连接时, MySQL的error log中出现了一些NOTE提醒有连接被断开了;

背景2中, 其实也是这个原因, 导致了在MySQL端堆积了大量的sleep连接, 结果把可用的connection都挤占了, 导致client无法再连接DB;
统一修改了haproxy的超时时间以后, 这种现象不再出现, 问题解决~

PS: 这种异常的sleep连接, 程序肯定有一部分的责任, 不过在解决问题的角度来说, 一方面提醒程序要注意DB连接的处理, 一方面也要在其他方面做好最后一道防线;
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
关系型数据库 MySQL Java
家人们,谁懂啊!mysql 版本5.7.99连接异常
在项目工作中需要部署nacos,数据库使用的是别的公司提供的mysql,本来挺好部署的一个服务却被一个报错打破,异常如下:
37 0
家人们,谁懂啊!mysql 版本5.7.99连接异常
|
2月前
|
SQL 关系型数据库 MySQL
Mysql 异常:Lock wait timeout exceeded; try restarting transaction的解决办法
Mysql 异常:Lock wait timeout exceeded; try restarting transaction的解决办法
|
4月前
|
关系型数据库 MySQL 数据库
一文剖析MySQL主从复制异常错误代码13114
一文剖析MySQL主从复制异常错误代码13114
124 0
|
4月前
|
SQL 关系型数据库 MySQL
MySQL主主SQL线程异常修复大作战,一失足成千古恨啊!
MySQL主主SQL线程异常修复大作战,一失足成千古恨啊!
181 0
|
4月前
|
SQL 监控 关系型数据库
MySQL主从复制“死掉”!引发Slave库SQL线程异常的一次“血案”追踪
MySQL主从复制“死掉”!引发Slave库SQL线程异常的一次“血案”追踪
315 0
|
9月前
|
SQL JavaScript 前端开发
两个相同的负载user在一起启动的时候,造成相关接口调用第一次报异常 调用第二次正常 如此反反复复 解决方法;mysql复习、JavaScript HTML BOM和DOM触发监听机制事件
两个相同的负载user在一起启动的时候 造成相关接口调用第一次报异常 调用第二次正常 如此反反复复 解决方法 放掉一个实例个数
80 0
两个相同的负载user在一起启动的时候,造成相关接口调用第一次报异常 调用第二次正常 如此反反复复 解决方法;mysql复习、JavaScript HTML BOM和DOM触发监听机制事件
|
10月前
|
IDE 关系型数据库 MySQL
MySQL 异常:这一篇就够了,MySQL 抛出异常的几种常见解决方式小结
MySQL 异常:这一篇就够了,MySQL 抛出异常的几种常见解决方式小结
310 0
MySQL 异常:这一篇就够了,MySQL 抛出异常的几种常见解决方式小结
|
11月前
|
关系型数据库 MySQL Linux
MySQL压测时Linux中断异常飚高,原来是因为...
MySQL压测时Linux中断异常飚高,原来是因为...
|
关系型数据库 MySQL
MySQL主从异常Coordinator stopped because there were error(s) in the worker(s). The most recent failur
MySQL主从异常Coordinator stopped because there were error(s) in the worker(s). The most recent failur
2660 0
|
SQL 安全 关系型数据库
关于MYSQL不允许修改和删除的异常报错解决方法
关于MYSQL不允许修改和删除的异常报错解决方法
220 0
推荐文章
更多