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.pswp.cn/news/395972.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395972.shtml
英文地址,請注明出處:http://en.pswp.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…