MySQL Aborted connection告警日志的分析
前言
有时候,连接MySQL的会话经常会异常退出,错误日志里会看到"Got an error reading munication packets"类型的告警。本篇文章我们一起来讨论下该错误可能的原因以及如何来规避。
1.状态变量Aborted_clients和Aborted_connects
我们来了解下Aborted_clients和Aborted_connects这两个状态变量的含义,当出现会话异常退出时,这两个状态值会有变化。根据官方文档描述,如下
造成Aborted_connects状态变量增加的可能原因
- 客户端试图访问数据库,但没有数据库的权限。
- 客户端使用了错误的密码。
- 连接包不包含正确的信息。
- 获取一个连接包需要的时间超过connect_timeout秒。
造成Aborted_clients状态变量增加的可能原因
- 程序退出前,客户机程序没有调用mysql_close()。
- 客户端睡眠时间超过了wait_timeout或interactive_timeout参数的秒数。
- 客户端程序在数据传输过程中突然终止。
简单来说即数据库会话未能正常连接到数据库,会造成Aborted_connects变量增加。数据库会话已正常连接到数据库但未能正常退出,会造成Aborted_clients变量增加。
2.Got an error reading munication packets原因分析
哪种情况会导致error log中出现“Aborted connection xxxx to db: 'db' user: 'dbuser' host: 'hostname' (Got an error reading munication packets)”类似告警呢?狼蚁网站SEO优化我们根据上面可能的原因来做下具体测试。每次测试要注意状态变量Aborted_clients和Aborted_connects的变化及错误日志记录。
- 测试一错误密码,错误用户
1.测试前查看状态变量值mysql> show global status like 'abort%';+------------------+-------+| Variable_name | Value |+------------------+-------+| Aborted_clients | 0 || Aborted_connects | 0 |+------------------+-------+ 2.测试过程# mysql -uroot -pwrongpassmysql: [Warning] Using a password on the mand line interface can be insecure.ERROR 1045 (28000): Aess denied for user 'root'@'localhost' (using password: YES)# mysql -uroot1 -pwrongpassmysql: [Warning] Using a password on the mand line interface can be insecure.ERROR 1045 (28000): Aess denied for user 'root1'@'localhost' (using password: YES) 3.查看状态变化及错误日志mysql> show global status like 'abort%';+------------------+-------+| Variable_name | Value |+------------------+-------+| Aborted_clients | 0 || Aborted_connects | 2 |+------------------+-------+错误日志记录2020-03-16T17:58:35.318819+08:00 6 [Note] Aess denied for user 'root'@'localhost' (using password: YES)2020-03-16T17:59:04.153753+08:00 7 [Note] Aess denied for user 'root1'@'localhost' (using password: YES) 结果Aborted_connects有增加 error log无Aborted connection相关记录
- 测试二睡眠时间超时或手动杀会话
1.测试前查看状态变量值mysql> show global status like 'abort%';+------------------+-------+| Variable_name | Value |+------------------+-------+| Aborted_clients | 0 || Aborted_connects | 2 |+------------------+-------+ 2.手动杀会话测试mysql> show processlist;+----+------+-----------+------+---------+------+----------+------------------+| Id | User | Host | db | Command | Time | State | Info |+----+------+-----------+------+---------+------+----------+------------------+| 9 | root | localhost | NULL | Query | 0 | starting | show processlist || 10 | root | localhost | NULL | Sleep | 7 | | NULL |+----+------+-----------+------+---------+------+----------+------------------+2 rows in set (0.00 sec)mysql> kill 10;Query OK, 0 rows affected (0.00 sec) 3.查看状态变化及错误日志mysql> show global status like 'abort%';+------------------+-------+| Variable_name | Value |+------------------+-------+| Aborted_clients | 1 || Aborted_connects | 2 |+------------------+-------+ 结果Aborted_clients有增加 error log无记录 ,类似的,睡眠时间超时后Aborted_clients有增加 error log中有Aborted connection相关记录。
会话异常退出一般会造成Aborted connection告警,即我们可以通过Aborted_clients状态变量的变化来反映出是否存在异常会话,那么出现“Got an error reading munication packets” 类似告警的原因就很明了了,查询相关资料,出造成Aborted connection告警的可能原因如下
- 会话链接未正常关闭,程序没有调用mysql_close()。
- 睡眠时间超过wait_timeout或interactive_timeout参数的秒数。
- 查询数据包大小超过max_allowed_packet数值,造成链接中断。
- 其他网络或者硬件层面的问题。
3.问题避免与
其实Aborted connection告警是很难避免的,error log里或多或少会有少量Aborted connection信息,这种情况是可以忽略的,当你的error log里频繁出现Aborted connection告警,这时候就应该注意了,可能会对业务产生较大的影响。狼蚁网站SEO优化列举出几点避免错误的建议,希望对你有所帮助。
- 建议业务操作结束后,应用程序逻辑会正确关闭连接,以短连接替代长连接。
- 检查以确保max_allowed_packet的值足够高,并且客户端没有收到“数据包太大”消息。
- 确保客户端应用程序不中止连接,例如,如果PHP设置了max_execution_time为5秒,增加connect_timeout并不会起到作用,因为PHP会kill脚本。其他程序语言和环境也有类似的安全选项。
- 确保事务提交(begin和mit)都正确提交以保证一旦应用程序完成以后留下的连接是处于干净的状态。
- 检查是否启用了skip-name-resolve,检查主机根据其IP地址而不是其主机名进行身份验证。
- 尝试增加MySQL的_read_timeout和_write_timeout值,看看是否减少了错误的数量。
以上就是MySQL Aborted connection告警日志的分析的详细内容,更多关于MySQL Aborted connection告警日志的资料请关注狼蚁SEO其它相关文章!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程