應用連線超時排查DB MySQL

哎呀我的天吶發表於2020-04-22

【問題概述】10:26分,應用超時報錯如下:

[2020-04-22 10:25:50,928] [ERROR] [DruidPooledStatement:357] [DubboServerHandler-192.168.xx.xx:20881-threa
d-199] -- [TID: 668796908.406.15875214226879429]   CommunicationsException, druid version 1.1.10, jdbcUrl :
 jdbc:mysql://rm-rds-instanceid.mysql.rds.aliyuncs.com:3306/xxxxxx?useUnicode=true&characterEncodin
g=utf-8&autoReconnect=true&allowMultiQueries=true, testWhileIdle true, idle millis 928197, minIdle 1, pooli
ngCount 4, timeBetweenEvictionRunsMillis 60000, lastValidIdleMillis 928197, driver com.mysql.jdbc.Driver, e
xceptionSorter com.alibaba.druid.pool.vendor.MySqlExceptionSorter
[2020-04-22 10:25:50,929] [ERROR] [DruidDataSource:1602] [DubboServerHandler-192.168.xx.xxx:20881-thread-19
9] -- [TID: 668796908.406.15875214226879429]   discard connection
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

首先檢視網路監控,這裡忽略,並沒有看到網路抖動的情況,檢視mysql伺服器,超時時間前後也沒有明顯的效能異常,那麼怎麼辦?

    首先網路監控屬於粗粒度的,粒度低的抖動網路監控根本檢測不到,並不能看到超時的原因,那麼我們抓取tcpdump來進行分析

建議迴圈抓包看下

Linux 固定大小迴圈抓包:


1、開啟一個到 ECS 的 ssh 連線,並以 root 身份登入。

在該視窗執行下列命令(下面的命令將抓包結果儲存在 20 個 50 MB 檔案中,迴圈使用)

tcpdump -i any -s 0 -w /var/tmp/rds.cap -C 50 -W 20 port RDS例項埠 or 53


2、復現問題。


3、使用 ctrl + c 終止上述視窗 的 tcpdump 命令。


下載 /var/tmp/rds.cap* 並提供給我們(如果抓包檔案過大,建議您放置在 Web 伺服器的子目錄下,以便我們下載)。

注意: 網路抓包可能會產生大尺寸檔案,建議考慮根據 ECS 磁碟空間使用情況合理選擇儲存目錄。


https://blog.51cto.com/9625010/2480805


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-2687741/,如需轉載,請註明出處,否則將追究法律責任。

相關文章