MySQL的Aborted告警
1.几条有用的mysql配置查询命令
SHOW GLOBAL STATUS LIKE '%Aborted%';
show global variables like '%timeout%'
show processlist;
2.几个重要的参数的分析
(1)wait_timeout:这个参数指的是数据库系统在关闭它之前,服务器等待非交互式连接上的活动的秒数。
(2)interactive_timeout:这个参数指的是在关闭交互式连接之前,服务器等待活动的秒数。
(3)Aborted_clients:比如把wait_timeout和interactive_timeout改小,由于timeout参数控制的,已经连接上数据的连接被杀掉Aborted_clients的值会增加。
(4)Aborted_connects:比如连续几次输错密码,这个值就会增长。再比如,第三方工具select的结果没有出来的时候选择停止则出现Aborted_clients和Aborted_connects均上涨,日志中出现Aborted connection
3.原理总结分析
再MySQL中sleep状态数百秒的而且经常重复链接是应用程序再工作后没有关闭连接的症状之一,而是依靠数据库wait_timeout来关闭他们,建议再操作结束时更改应用程序逻辑以正确关闭连接。
检查以确保max_allowed_packet的值足够高,并且客户端没有收到“数据包太大”消息。 这种情况他会中止连接,而不正确关闭它。
确保事务正确提交(开始和提交),以便一旦应用程序“完成”连接,它将处于“clean”的状态;
应该确保客户端应用程序不中止连接。比如,如果python中设置了timeout,即使增加connect_timeout也是没用的,python会杀死连接。
连接延迟的另一个原因是DNS问题。 检查是否启用了skip-name-resolve,检查主机根据其IP地址而不是其主机名进行身份验证。
尝试增加MySQL的net_read_timeout和net_write_timeout值,看看是否减少了错误的数量。
参考: