日志分析告警实现java_关于Aborted connection告警日志的分析

前言:

有时候,连接MySQL的会话经常会异常退出,错误日志里会看到"Got an error reading communication packets"类型的告警。本篇文章我们一起来讨论下该错误可能的原因以及如何来规避。

1.状态变量Aborted_clients和Aborted_connects

首先我们来了解下Aborted_clients和Aborted_connects这两个状态变量的含义,当出现会话异常退出时,这两个状态值会有变化。根据官方文档描述,总结如下:

793d6bc8c2af7371d664200699364d19.png

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

客户端试图访问数据库,但没有数据库的权限。

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

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

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

df50f42c8f2ba3d12faae7a62c10bbf6.png

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

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

客户端睡眠时间超过了wait_timeout或interactive_timeout参数的秒数。

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

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

2.Got an error reading communication packets原因分析

哪种情况会导致error log中出现“Aborted connection xxxx to db: 'db' user: 'dbuser' host: 'hostname' (Got an error reading communication packets)”类似告警呢?下面我们根据上面可能的原因来做下具体测试。每次测试要注意状态变量Aborted_clients和Aborted_connects的变化及错误日志记录。

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

1.测试前查看状态变量值

mysql> show global status like 'abort%';

+------------------+-------+

| Variable_name | Value |

+------------------+-------+

| Aborted_clients | 0 |

| Aborted_connects | 0 |

+------------------+-------+

2.测试过程

# mysql -uroot -pwrongpass

mysql: [Warning] Using a password on the command line interface can be insecure.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

# mysql -uroot1 -pwrongpass

mysql: [Warning] Using a password on the command line interface can be insecure.

ERROR 1045 (28000): Access 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] Access denied for user 'root'@'localhost' (using password: YES)

2020-03-16T17:59:04.153753+08:00 7 [Note] Access 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 communication packets” _类似告警的原因就很明了了,查询相关资料,总结出造成Aborted connection告警的可能原因如下:

会话链接未正常关闭,程序没有调用mysql_close()。

睡眠时间超过wait_timeout或interactive_timeout参数的秒数。

查询数据包大小超过max_allowed_packet数值,造成链接中断。

其他网络或者硬件层面的问题。

3.问题避免与总结

其实Aborted connection告警是很难避免的,error log里或多或少会有少量Aborted connection信息,这种情况是可以忽略的,但是当你的error log里频繁出现Aborted connection告警,这时候就应该注意了,可能会对业务产生较大的影响。下面列举出几点避免错误的建议,希望对你有所帮助。

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

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

确保客户端应用程序不中止连接,例如,如果PHP设置了max_execution_time为5秒,增加connect_timeout并不会起到作用,因为PHP会kill脚本。其他程序语言和环境也有类似的安全选项。

确保事务提交(begin和commit)都正确提交以保证一旦应用程序完成以后留下的连接是处于干净的状态。

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

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

参考:

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

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

相关文章

UC浏览器APP如何卸载插件

现在很多用户在使用浏览器的时候都会安装一些插件辅助使用,方便用户享受更多便捷的功能,很多用户都会安装相关的插件服务,方便用户更好的使用,那么在用户不需要这些插件的时候要如何删除呢?今天小编就会与大家一起来分享一下浏览…

java在控制台输出sql_logger4j配置数据库sql输出控制台

#--------------------------------# 设定logger的root level为DEBUG/ERROR/info,指定的输出目的地(appender)为stdoutlog4j.rootLoggerERROR, stdout, fileout#log4j.logger.testinfo#log4j.logger.org.apache.jasper DEBUG#log4j.logger.org.apache.catalina.sta…

爱奇艺2020官方下载_爱奇艺视频如何上传

软件是否好用,还得大家下载爱奇艺安装才知道。本文分享爱奇艺2020官方下载_爱奇艺视频如何上传。爱奇艺电影频道拥有大量高清在线电影资源,热门高清电影、好评电影、电影预告都可以在线观看,不去电影院也能看好电影,而且是看所有电…

网页java在div输出内容_JS实现读取xml内容并输出到div中的方法示例

本文实例讲述了JS实现读取xml内容并输出到div中的方法。分享给大家供大家参考,具体如下:note.xml文件结构:GeorgeJohnReminderaJohnReminderGeorgeJohnReminder利用js将xml输出到div中:www.jb51.net js读取xml.aaaa{width: 30%;height: 50px;…

如何在优酷官网上传视频

当拍攝或是自做的视頻要想发送到在网上时,优酷视频便是一个非常好的视频网站,那如何把视频上传入优酷视频上呢? 01、 网站搜索并进到优酷官网。 如何在优酷官网上传视频 02、 在优酷主页点一下右上方的“登陆”标志,键入登录密码登陆优酷…

java枚举加载顺序_java 中类的加载顺序(转)

1、虚拟机在首次加载Java类时,会对静态初始化块、静态成员变量、静态方法进行一次初始化2、只有在调用new方法时才会创建类的实例3、类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始化块部分,然后是父类的构造方法…

PP视频如何关闭下载完成通知我

播放器软件很多,本文小编给大家推荐PP视频。PP视频以优质的纯网内容,多元、贴心的生活服务态度,为用户打造一个人与服务相连接的全方位移动视频平台。大家通过PP视频播放器,可以观看到PP视频网站上的所有影视剧等视频资源。目前PP…

java开发遇到最大的问题_java开发遇到的问题总结(三)

25、使百分比的数据显示2位小数publicstaticString div(doublev1,doublev2){DecimalFormat dfnewDecimalFormat("##0.00%");returndf.format(Double.valueOf((v1/v2)));}26、数据缓存问题1)在Action中声明private Cache ehCache;2)放入缓存publicvoidputEcache(){try…

腾讯视频电脑版下载_腾讯视频~如何用腾讯视频

今天继续给大家分享腾讯视频方面的内容。腾讯视频的主界面资源分类最广,为用户提供最新、最热的电影、电视剧、综艺、动漫、体育等视频节目。腾讯视频播放器采用了智能的P2P流媒体播放技术,支持丰富内容的在线点播及电视台直播。腾讯视频是一款可以电影资…

java 位运算 权限控制_java 位运算权限管控(转载)

这里笔者介绍一种很常用,也比较专业的权限控制思路。这里用java语言描述,其实都差不多的。要换成其他的语言主,自己转一下就可以了。为了方便起见,我们这里定义a^b为:a的b次方。这里,我们为每一个操作设定一…

优酷视频如何将地区设置为中国大陆

播放器软件很多,本文小编给大家推荐优酷视频,本文继续分享“优酷视频如何将地区设置为中国大陆”。优酷视频放器是优酷视频旗下的视频客户端产品,支持丰富内容的在线点播及电视台直播。作为国内首家,全力打造正版视频平台的优酷视…

java相遇问题_两车追及或相遇问题(hdu1275)数学题

两车追及或相遇问题Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 902 Accepted Submission(s):259Problem Description外号叫“猪头三”的小学生在数学课上,经常遇到两车相遇或追及的方程题,…

腾讯视频如何编辑自我介绍

小编继续给大家推荐腾讯视频这款非常好用的播放器软件,文章主要围绕“腾讯视频如何编辑自我介绍”分享,大家可以阅读一下。播放器家园网提供了腾讯视频播放器官方最新版下载,快来下载体验,本站提供的所有软件都是官方链接直接下载…

java常用class类_java常用类

java常用类内部类1.成员内部类:在一个类的内部定义一个完整的类例如:外部类public class Body{内部类class Header{}}内部类可以直接访问外部类的私有成员,而且不破坏封装内部类可以为外部类提供必要的功能组件,成员内部类 在类的…

优酷视频怎么转二维码_优酷视频转二维码

有的人想将自己制作的视频分享出去,那么该如何将视频转换成二维码来分享呢?其实方法很简单,直接在视频界面中就能生成,这里和大家讲讲。 01、 登录自己的优酷帐号,然后点击右上角的上传按钮。 优酷视频怎么转二维码_优酷视频转…

mysql 分类计数器_PHP MySQL映像计数器

我是PHP新手,一直在研究计数器.计数器很好用,但是现在我想将数字转换成图像.我创建了12张图片0-9,一个空格和一个逗号图片.我在上下搜索,以获取将数字格式转换为图像所需的提示,但没有成功.到目前为止,我所发现的就是如何仅使用文件PHP / MySQL来建立基本的计数器,以及如何使用…

腾讯视频如何设置定时关闭

这篇文章主要说的是腾讯视频下载不了_腾讯视频如何设置定时关闭,希望可以帮助大家。播放器家园网提供了腾讯视频播放器官方最新版下载,快来下载体验,本站提供的所有软件都是官方链接直接下载,没有任何二次封装,没有包含…

java中字典算法_Java字典生成算法讲解

在实际应用中,大家使用的密码可以说多种多样,但是无论有多少,其组成不遑是有可打印字符组成的,我们可以认为class CreateDic{private int BitNum;private String Str;public void SetBitNum(int num){BitNumnum;}public void SetS…

优酷视频如何在手机进行安全设置?

你好,假如您要想拆换优酷手机绑定手机上/登陆密码,您能够按下列方式开展实际操作: 1、打开手机优酷app,点一下【我的】-【我的在线客服】: 优酷视频如何在手机进行安全设置? 2、点一下【我的在线客服】挑…

java访问同一个变量_java – 从另一个类访问变量

很简单的问题,但我不能这样做。我有3个班:DrawCircle类import java.awt.*;import java.awt.event.*;import javax.swing.*;class DrawCircle extends JPanel{private int w, h, di, diBig, diSmall, maxRad, xSq, ySq, xPoint, yPoint;public DrawFrame …