时间:2021-05-23
本文主要给大家介绍的是关于MySQL中Aborted告警的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:
实战
Part1:写在最前
在MySQL的error log中,我们会经常性看到一些各类的Aborted connection错误,本文中会针对这类错误进行一个初步分析,并了解一个问题产生后的基本排查思路和方法。掌握这种方法是至关重要的,而不是出现问题了,去猜,去试。数据库出现问题的时候需要DBA在短时间内快速解决问题,因此一个好与坏的DBA,区别也在于此。
Part2:种类
[Warning] Aborted connection 305628 to db: 'db' user: 'dbuser' host: 'hostname' (Got an error reading communication packets)[Warning] Aborted connection 81 to db:'unconnected' user: 'root' host: '127.0.0.1' (Got timeout reading communicationpackets)[Warning] Aborted connection 109 to db:'helei1' user: 'sys_admin' host: '192.168.1.1' (Got an error writing communication packets)[Warning] Access denied for user 'root'@'127.0.0.1' (using password: YES)[Warning] Got an error writing communication packetsPart3:重点参数分析
wait_timeout
Command-Line Format --wait-timeout=# System Variable Name wait_timeout Variable Scope Global, Session Dynamic Variable Yes Permitted Values(Windows) Type integer Default 28800 Min Value 1 Max Value 2147483 Permitted Values(Other) Type integer Default 28800 Min Value 1 Max Value 31536000
这个参数指的是数据库系统在关闭它之前,服务器等待非交互式连接上的活动的秒数。
interactive_timeout
Command-Line Format --interactive-timeout=# System Variable Name interactive_timeout Variable Scope Global, Session Dynamic Variable Yes Permitted Values Type integer Default 28800 Min Value 1
这个参数指的是在关闭交互式连接之前,服务器等待活动的秒数
Warning:警告这两个参数建议一起调节,能够避免一些坑。
本文的两个参数值采用的是默认值
mysql> show global variables like '%timeout%';+----------------------------+----------+| Variable_name | Value |+----------------------------+----------+| connect_timeout | 10 || delayed_insert_timeout | 300 || innodb_lock_wait_timeout | 50 || innodb_rollback_on_timeout | OFF ||interactive_timeout | 28800 || lock_wait_timeout | 31536000 || net_read_timeout | 30 || net_write_timeout | 60 || slave_net_timeout | 3600 ||wait_timeout | 28800 |+----------------------------+----------+10 rows in set (0.01 sec)另外在数据库中,我们重点关注下这两个参数,看看什么情况下Aborted_clients会提升,什么情况下Aborted_connects 会提升
mysql>show global status like 'aborted%';+------------------+-------+|Variable_name | Value |+------------------+-------+|Aborted_clients | 19 ||Aborted_connects | 0 |+------------------+-------+2 rows inset (0.00 sec)Part4:案例1
这里我故意输入错误的密码5次,来看下数据库的error log和Aborted的哪个参数记载了这一问题
[root@HE3~]# mysql -uroot -pwrongpass -h127.0.0.1ERROR 1045 (28000): Access denied for user 'root'@'127.0.0.1' (using password: YES)[root@HE3~]# mysql -uroot -pwrongpass -h127.0.0.1ERROR 1045 (28000): Access denied for user 'root'@'127.0.0.1' (using password: YES)[root@HE3~]# mysql -uroot -pwrongpass -h127.0.0.1ERROR 1045 (28000): Access denied for user 'root'@'127.0.0.1' (using password: YES)[root@HE3~]# mysql -uroot -pwrongpass -h127.0.0.1ERROR 1045 (28000): Access denied for user 'root'@'127.0.0.1' (using password: YES)[root@HE3~]# mysql -uroot -pwrongpass -h127.0.0.1ERROR 1045 (28000): Access denied for user 'root'@'127.0.0.1' (using password: YES)可以看出,这里的Aborted_connects 记录了密码错误的这一问题
mysql>show global status like 'aborted%';+------------------+-------+|Variable_name | Value |+------------------+-------+|Aborted_clients | 19 ||Aborted_connects | 5 |+------------------+-------+2 rows inset (0.00 sec)error log中,也记载了这类密码输错的信息
[Warning] Access denied for user'root'@'127.0.0.1' (using password: YES)[Warning] Access denied for user 'root'@'127.0.0.1' (using password:YES)[Warning] Access denied for user 'root'@'127.0.0.1' (using password:YES)[Warning] Access denied for user 'root'@'127.0.0.1' (using password:YES)[Warning] Access denied for user 'root'@'127.0.0.1' (using password:YES)Part5:案例2
接下来我们看下文章第三节提到的两个重点参数对数据库连接的行为影响
这里我们将这两个参数均配置为10秒
mysql>set global wait_timeout=10;Query OK,0 rows affected (0.00 sec) mysql>set global interactive_timeout=10;Query OK,0 rows affected (0.00 sec)mysql>show processlist;ERROR 2006 (HY000): MySQL server has gone awayNo connection. Trying to reconnect... Connection id: 79 Current database: *** NONE *** +----+------+-----------------+------+---------+------+-------+------------------+| Id |User | Host | db | Command | Time | State | Info |+----+------+-----------------+------+---------+------+-------+------------------+| 79 |root | 127.0.0.1:42016 | NULL | Query | 0 | NULL | show processlist |+----+------+-----------------+------+---------+------+-------+------------------+1 row in set (0.00 sec)这里三次操作,可以看到clients数上升,这是由于timeout参数控制的,已经连接上数据的连接被杀掉。
mysql>show global status like 'aborted%';ERROR 2006 (HY000): MySQL server has gone awayNo connection. Trying to reconnect... Connection id: 81 Current database: *** NONE *** +------------------+-------+|Variable_name | Value |+------------------+-------+|Aborted_clients | 22 ||Aborted_connects | 5 |+------------------+-------+2 rows in set (0.01 sec)error log中记载的是
[Warning] Aborted connection 81 to db: 'unconnected' user: 'root' host: '127.0.0.1' (Got timeout reading communication packets)[Warning] Aborted connection 78 to db: 'unconnected' user: 'root' host: '127.0.0.1' (Got timeout reading communication packets) [Warning] Aborted connection 79 to db: 'unconnected' user: 'root' host: '127.0.0.1' (Got timeout reading communication packets)Part6:案例3
在这个案例中我们看下最大连接数对数据库连接的行为影响
mysql>show global variables like 'max_conn%';+--------------------+-------+|Variable_name | Value |+--------------------+-------+|max_connect_errors | 1000 ||max_connections | 1024 |+--------------------+-------+2 rows in set (0.00 sec) mysql>set global max_connections=2;Query OK,0 rows affected (0.00 sec)这里看到爆出了连接数过多的问题
[root@HE3~]# mysql -uroot -pMANAGER -h127.0.0.1ERROR 1040 (HY000): Too many connections而错误日志没有任何记录
Part7:案例4
第三方工具navicat select结果没有出来的时候选择停止则出现
clients上涨
mysql>show global status like 'aborted%';+------------------+-------+|Variable_name | Value |+------------------+-------+|Aborted_clients | 28 ||Aborted_connects | 10 |+------------------+-------+2 rows in set (0.00 sec)error log日志记录
170626 16:26:56 [Warning] Aborted connection 109 to db: 'helei1' user: 'sys_admin' host: '192.168.1.1' (Got an error writing communication packets)Part8:原因总结
总结
通过这4个案例,我们能够了解到,Aborted_clients、和Aborted_connects的区别,以及什么情况下会爆出什么样的错误日志,文章第二节中的几个Aborted错误是常见的错误,这类错误出现的时候脑海里要有一个理论知识,知道什么情况下,会出现什么样的错误,以便快速定位问题。由于笔者的水平有限,编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
优化宝物标题是影响流量的重要因素,但标题优化确实令人头疼。标题由关键词组合而成,关键词多,想自然组合,必须符合顾客的检索习惯。。1、旧数据分析详细分析宝物已有关
拍了很多视频素材,可剪辑真的是很费时间啊,真令人头疼。OPPOAce2自带有Soloop即录这款APP,让剪辑变得更简单,下面我们就来看看详细的教程。1、通过桌
用博客来推广店铺的淘宝刷信用卖家不在少数,但怎样写出有效吸引人的博文的确是件令人头疼的事情。本文就如何写好推广博文来分析一下。标题结合关键词博客中的文章是以标题
在日常重构中,form表单家族中的uploadfield在使用css美化时令人头疼!默认情况下,各个浏览器下的表现层次不齐!如下图所示,让我等情何以堪。通常,我
新手如何建网店,对初次建立网店的用户来说,制作网页是件头疼的事情。对于由别人帮助建站的用户来说,网店的后期更新与维护可能更令人头疼。缺乏专业人才,缺乏专业知识,