mysql的告警日志_运维日记|MySQL关于aborted告警日志的分析

又是一个季度一次的现场巡检,期待数据库能跑的又快又稳,毕竟这是对DBA最大的馈赠了。

结果不遂人意发现在错误日志内存在大量的如下报错:

f404d121748052f996280fac9051e581.png

查看当前数据库的状态值:

022f64dd3d296dc8ea8e0d2616610bed.png

查看数据库关于数据库会话的关键参数:

数据库环境及相关参数connect_timeout10

interactive_timeout28800

wait_timeout28800

max_connections151

net_write_timeout60

net_read_timeout30

可见,自数据库启动,440万尝试连接中,近140万会话异常退出,近200万会话未能正常连接到数据库环境。而排查错误日志中该报错无时间规律,同时客户反馈在业务层面,经常有长连接断开的现象。

TIP:

首先我们通过官方文档来了解Aborted_clients和Aborted_connects两个状态变量的代表意义,以及哪些情况或因素会导致这些状态变量变化呢?

388c654aa6aafc2da6e9499670889ad1.png

造成Aborted_connects状态变量增加的可能原因:

1.客户机试图访问数据库,但没有数据库的特权。

2.客户端使用了错误的密码。

3.连接包不包含正确的信息。

4.获取一个连接包需要的时间超过connect_timeout秒。

79dd41444002b24f8957232961d98d55.png

造成Aborted_clients 状态变量增加的可能原因:

1.程序退出前,客户机程序没有调用mysql_close()。

2.客户端睡眠时间超过了wait_timeout或interactive_timeout秒。

3.客户端程序在数据传输过程中突然终止。

简单来说即:数据库会话未能正常连接到数据库,会造成Aborted_connects变量增加。数据库会话已正常连接到数据库但未能正常退出,会造成Aborted_clients变量增加。

根据错误日志中报错:

Got timeout reading communication packets

出现如上错误,基本上可判断为数据库认证超时导致,或者业务线程异常退出。

客户反馈并无相关业务客户端异常退出等操作或现象。

可简单判断会话超过interactive_timeout/ wait_timeout限制时间(28800)导致会话被数据库杀掉,跟应用沟通之后,应用确认其业务逻辑会话均为长连接,不会主动进行断开操作。如上可初步解释为何Aborted_clients状态变量会如此之高。

那又该如何解释Aborted_connects这个状态变量如何之高?

能使该状态变量增加的几种可能性,我们依次来确认排查。

1.客户机试图访问数据库,但没有数据库的特权。

2.客户端使用了错误的密码。

3.连接包不包含正确的信息。

4.获取一个连接包需要的时间超过connect_timeout秒。

关于1、2、3这三点,可统一解释为 用户/密码/权限错误导致无法正常连接到数据库。这几个错误不会在错误日志中报该错误(Got timeout reading communication packets),错误日志中也不存在(Access denied for user)该类错误,且业务能正常运行。这样就能排除这三点的可能性。

那唯一可能就是由于连接认证超时时间超过connect_timeout秒,数据库层面connect_timeout参数设置为默认的10s。根据官方文档解释:

668d343df6985219ca1f2372b5b476ff.png

10s基本上能够支持业务使用。

那还有什么可能呢?

跟客户确认之后,了解到应用是通过MySQL Router连接到数据库服务器。检查Router 参数文件配置,发现如下参数设置

cf96c32322588f1ab8a8f83537e07054.png

发现在Router的配置中connect_timeout 配置为3s,那是否可能由于客户端连接数据库的认证超过该限制导致。

因此建议修改Router配置文件中该参数,然后运行一段时间后是否情况得到一定的改善。

后续排查往网络方向排查,简单可通过客户端长ping数据库服务端,查看网络是否存在波动现象。

TIP:

根据官方文档中介绍,还可能是由于网络或者硬件层面的问题造成这个问题。

8c9df63fd311eed3c308edbddcf1ca29.png

1. max_allowed_packet变量值太小,或者查询需要的内存比分配给mysqld的内存多。

2. 在Linux中使用以太网协议,包括半双工和全双工。一些Linux以太网驱动程序有这个bug。您应该通过在客户机和服务器机器之间使用FTP传输一个大文件来测试这个bug。如果传输以突发-暂停-突发-暂停模式进行,那么您正在经历一种Linux双工综合征。将网卡和集线器的双工模式切换到全双工或半双工模式,并测试结果以确定最佳设置。

3. 线程库中导致读取中断的问题。

4. 错误的TCP / IP配置。

5. 有故障的以太网、集线器、交换机、电缆等等。只有通过更换硬件才能正确诊断。

下面对各类Aborted connection的可能性进行一定的测试与分析:

测试环境说明:MySQL5.7

测试环境及相关参数connect_timeout10

interactive_timeout28800

wait_timeout28800

max_connections151

net_write_timeout60

net_read_timeout30

注:每次测试前均重启数据库重置状态值,方便后续比较

34bbd1f16ca6443b0184e10e807129c0.png

测试一:错误密码、错误用户

d01095953035e09fdb370b094b4f026d.png

错误用户:数据库不存在该用户。

查看数据库内状态值:

b342e476d60b1582d1ae38baf8ef68df.png

查看错误日志:

e9933b19280378c17a9c25fba8470c63.png

测试二:超时参数

当前数据库wait_timeout 及interactive_timeout均为默认的28800,下面调整这两个参数,测试对数据库连接的行为影响。

该实验同时修改两个参数为10:

c0dd8538c07e7af9768d628fb52f0b39.png

查看数据库内状态值:

65c0dbd447f8da1e1e74d6b32927e8bc.png

查看错误日志:

8f044946dd3fcec6930e40db349db20d.png

测试三:最大连接数

当前数据库max_connections参数默认为151,下面调整改参数,测试对数据库连接的行为影响。

fed7c1976ffecf6fc96979f79f797501.png

当开启第四个连接会话,报如下错误:

6d5677bcf6589f0ec26dd5933bd29132.png

查看数据库内状态值

28de01532f8115a9d84e132b2d40552b.png

此时错误日志无变化。

测试四

第三方工具SQLyog select结果没有出来的时候选择停止则出现:

c16ef7f662b329032928f1a8d950d5ab.png

查看数据库内状态值:

c00f1ebee4a4352d4ba64922511ae5db.png

此时错误日志无变化。

结论:

1.建议业务操作结束后使应用程序逻辑以正确关闭连接,以短连接替代长连接。

2.确保max_allowed_packet的值足够高,并且客户端没有收到“数据包太大”消息。

3.确保客户端应用程序不中止连接。

4.检查是否启用了skip-name-resolve,检查主机根据其IP地址而不是其主机名进行身份验证。

5.尝试增加MySQL的net_read_timeout和net_write_timeout值,看看是否减少了错误的数量。

参考文献

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2017年Spring发布了30个新的Android库,值得您关注

by Michal Bialas由Michal Bialas 2017年Spring推出的30个最酷的Android库 (The 30 Coolest Android Libraries from Spring 2017) These are my 30 favorite new Android libraries that have come out since March 2017. Some of them aren’t production ready yet, but yo…

《异构信息网络挖掘: 原理和方法(1)》一第2章 基于排名的聚类

本节书摘来自华章出版社《异构信息网络挖掘: 原理和方法(1)》一书中的第2章,作者[美]孙艺洲(Yizhou Sun)韩家炜(Jiawei Han),更多章节内容可以访问云栖社区“华章计算机”…

html怎样将单元格的字竖式,数学竖式计算的标准格式是怎样的?需要注意哪些问题?...

小学阶段数学计算题是重中之重,也是为日后打基础的时间段,所以在小学的时候,要让孩子熟练掌握数学计算。数学计算在这段时期一般比较简单,通常情况下学生可以采用口算、心算的形式,但是有的学生因为这两个能力不强。于…

Windows类标识符及其妙用

Windows类标识符 百度百科这样解释: Windows的类标识符class identifier也称为CLASSID或CLSID,是与某一个类对象相联系的唯一标记(UUID)。一个准备创建多个对象的类对象应将其CLSID注册到系统注册数据库的任务表中,以使客户能够定位并装载与该…

mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...

MySQL 基础学习二:创建一个用户表,并 增删改查提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的。第一步,创建一个用户表1,打开控制台,进入数据库C:\Users\Administrator>MySQL -u root -p2,查看有什么数据库MySQ…

《软件工程(第4版?修订版)》—第1章1.5节 系统的方法

本节书摘来自异步社区《软件工程(第4版?修订版)》一书中的第1章1.5节 系统的方法,作者【美】Shari Lawrence Pfleeger , 【加】Joanne M.Atlee,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.5 系统的方法软件工程&am…

2-2 用Python爬取银河演员网上的演员参演电影的信息进行抓取

脚本中用到的actors_use.csv为之前从豆瓣上抓取的演员列表。 1 galaxyactors.py2 # -*- coding: utf-8 -*-3 #该脚本可以按照文件actors_use.csv中给出的演员的姓名4 #对银河演员网http://www.8fkd.com/上的演员参演电影的信息进行抓取5 #信息包括演员参演电影和电影日期&#…

在c语言中,以r方式不能打开并不存在的文件,C语言文件选择题

C语言文件选择题(答案在最后)1、标准库函数fgets(s,n,f)的功能是A) 从文件f中读取长度为n的字符串存入指针s所指的内存B) 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存C) 从文件f中读取n个字符串存入指针s所指的内存D) 从文件f中读取长度为n-1的字符串存入指针s所指…

动脑2017android_您肯定要在2017年初尝试的25个新Android库

动脑2017androidby Michal Bialas由Michal Bialas 您肯定要在2017年初试用的25个Android库 (25 Android libraries you definitely want to try out in early 2017) This is a list of 25 best Android libraries released in January and February 2017. All of these are wo…

linux中安装多个mysql_liunx系统下安装多个MySql数据库并做主从配置

在网上搜索了很多资料,都没有看到像样的文档,思路不是很清晰,对第一次安装的朋友来说较为困难,经过长时间的安装尝试和查询网上零碎的知识点,终于成功的完成Linux系统下多MySql数据库安装和主从配置,现在分…

034_nginx报错总结

一、nginx: [emerg] "client_header_timeout" directive is not allowed here in /opt/nginx/conf/vhost.d/newton-api.uuwatch.com.conf:24 location / { client_body_timeout 5s;client_header_timeout 3s; #配置参数报错proxy_set_header X-Forwarded-For …

江苏省高等学校计算机一级成绩查询,江苏计算机一级考试成绩查询

想要了解江苏2020年9月计算机一级考试成绩查询入口的小伙伴快来看看吧!下面由出国留学网小编为你精心准备了“江苏2020年9月计算机一级考试成绩查询入口公布”,持续关注本站将可以持续获取更多的考试资讯!江苏2020年9月计算机一级考试成绩查询…

Linux中mongodb安装和导出为json

采用官方工具导出mongo数据为json格式 文档:https://docs.mongodb.com/manual/reference/program/mongoexport/ 可以远程导出,只要有host:port即可。 首先需要安装tools: 在redhat中: 文档:https://docs.mongodb.com/manual/tutor…

《树莓派实战秘籍》——1.17 技巧17添加重启按钮

本节书摘来异步社区《树莓派实战秘籍》一书中的第1章,第1.17节,作者:【美】Ruth Suehle ,Tom Callaway,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.17 技巧17添加重启按钮 树莓派实战秘籍也许你已经注意到Pi缺少了某…

dns是指网络域名系统_域名系统(DNS)是Internet的骨干。 这就是全部的运作方式。...

dns是指网络域名系统by Nikolas ODonnell由Nikolas ODonnell 域名系统(DNS)的工作方式以及如何使其变得更好。 (How the Domain Name System (DNS) works and how you can make it better.) The Domain Name System (DNS) is often referred to as the backbone of the intern…

07.敏捷项目管理——推测阶段笔记

00.推测阶段关注产品很项目——创造和理解产品结构、性能和故事功能清单以及发布计划。 01.发布计划会用到与产品规格、平台结构体系、资源、风险分析、业务约束以及目标进度等信息。 02.迭代计划和开发方法有两个至关重要的组成部分——短期迭代时间框和功能。 03.产品经理控制…

mysql临时关闭索引功能_MySQL优化之索引优化

$1.WHY : 找到MySQL Query执行慢的原因1.1 EXPLAIN通过Explain查看SQL Query语句的执行情况&#xff0c;从中找出导致MySQL查询性能差的原因EXPLAIN QUERY语句【字段解释】<1> id -- 表的读取顺序id相同时&#xff0c;按照从上至下的顺序执行id不同时&#xff0c;id值越…

Maven实战. 1.3Maven与极限编程

1.3Maven与极限编程 极限编程&#xff08;XP&#xff09;是近些年在软件行业红得发紫的敏捷开发方法&#xff0c;它强调拥抱变化。该软件开发方法的创始人Kent Beck提出了XP所追求的价值、实施原则和推荐实践。下面看一下Maven是如何适应XP的。 首先看一下Maven如何帮助XP团队实…

python 下字符串格式时间比较

python 下有多个有关时间的模块&#xff0c;分别是time、datetime、calendar&#xff0c;今天重点讨论下time写法。 其中time模块&#xff0c;主要有以下方法&#xff1a; ltimetime.time() 获取当前系统时间&#xff0c;返回float型数值时间戳&#xff08;当前时间相对于1970.…

要记住的Facepalm:我在未先测试SDK的情况下对其进行了改进。

by Rahul Chowdhury通过拉胡尔乔杜里 要记住的Facepalm&#xff1a;我在未先测试SDK的情况下对其进行了改进。 (A Facepalm to Remember: I bumped up the version of an SDK without testing it first.) It all started when Google made its App Shortcuts API available fo…