偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

MQ-消息堆積-一條SQL阻塞了整個服務線程案例分析

數(shù)據(jù)庫 其他數(shù)據(jù)庫
對參數(shù)是null的情況進行過濾,不再向Oracle發(fā)送這樣的SQL語句;同時日志里對這種異常情況進行記錄,以便更細致地分析數(shù)據(jù)為null的產(chǎn)生場景。 加強應用可觀測性之線程執(zhí)行耗時監(jiān)控。

業(yè)務背景

業(yè)務中某個應用在消費MQ的時候,出現(xiàn)部分機器消息堆積,隨著時間推移,堆積的機器數(shù)量越來越多,消息的堆積總量越來越多。

問題現(xiàn)象

系統(tǒng)監(jiān)控

CPU、Load、內(nèi)存、網(wǎng)絡、磁盤監(jiān)控指標正常;JVM 內(nèi)存、GC正常。

MQ監(jiān)控

圖1 消費者狀態(tài)

分析過程

MQ消息堆積最常見的情況是:應用側處理MQ消息比較慢,觸發(fā)了MQ的流控機制(MQ在統(tǒng)計到應用消費慢的時候,會逐步減少給應用側的消息,最糟糕的情況是MQ一條消息也不會發(fā)給應用來消費)。

接下來的思路是慢在了哪?

在業(yè)務監(jiān)控完備的情況下,通過分析業(yè)務監(jiān)控指標,可以粗略定位異常點

明確運行的程序在忙些什么,分析線程堆棧信息

堆棧信息

圖2 堆棧信息

上面圖片中,TID=562的線程正在read Oracle返回的信息。經(jīng)過觀測,TID=562的線程一直處于上面圖片中的狀態(tài)。由于上面圖片中的堆棧信息不完整,所以使用jstack抓取后分析出一個關鍵信息:

locked oracle.jdbc.driver.T4CConnection@31c02e79

T4CConnection分析

【oracle.jdbc.driver.T4CConnection@31c02e79】是與Oracle交互的數(shù)據(jù)庫連接對象,需要分析出

該連接對象對應的socket信息

該連接對象正在執(zhí)行的SQL

該連接對象關聯(lián)的statements對象信息

T4CConnection信息

圖3 T4CConnection

Socket信息

圖4 與數(shù)據(jù)連接的Socket信息

獲取到Socket信息進行了如下幾個方面的分析:該Socket與Oracle服務端交互情況:

圖5 與數(shù)據(jù)連接的TCP連接信息

//通過tcpdump分析與Oracle服務端交互的報文,發(fā)現(xiàn)該連接上沒有任何報文交互
tcpdump -i any tcp and port 45556 -A -nn

問:與Oracle DBA確認該Socket在服務端正在執(zhí)行什么SQL?答:沒找到任何關于該Socket的信息

SQL信息

通過分析oracle.jdbc.driver.T4CConnection類代碼及【oracle.jdbc.driver.T4CConnection@31c02e79】屬性信息找到了正在執(zhí)行的SQL及與該連接關聯(lián)的statements信息:SQL:

圖6 SQL

statements:

圖7 SQL參數(shù)值

到此,我們分析出了引起線程阻塞的SQL詳情。

解決辦法

對參數(shù)是null的情況進行過濾,不再向Oracle發(fā)送這樣的SQL語句;同時日志里對這種異常情況進行記錄,以便更細致地分析數(shù)據(jù)為null的產(chǎn)生場景。

加強應用可觀測性之線程執(zhí)行耗時監(jiān)控○ 在業(yè)務邏輯開始的前面,添加一個filter○ 當請求到達filter的時候,將當前線程及此時的時間記錄到一個Map中○ 當請求結束回到filter的時候,將當前線程從Map中刪除○ 單獨起一個定時任務來遍歷Map,當發(fā)現(xiàn)Map中某個線程執(zhí)行時間超過閾值,就打印出線程的堆?!?當開發(fā)人員收到異常堆棧的報警,人工介入進行系統(tǒng)恢復及問題快速定位?。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2021-04-16 07:04:53

SQLOracle故障

2022-07-31 22:07:03

宕機業(yè)務場景

2021-02-09 09:50:21

SQLOracle應用

2025-05-20 00:00:00

2021-06-15 10:46:51

HTTPS網(wǎng)絡協(xié)議TCP

2020-10-26 08:02:28

SQL慢查詢索引

2024-12-09 08:44:58

2024-07-29 09:49:00

SQLMySQL執(zhí)行

2017-10-23 15:17:42

技術業(yè)務職位

2020-07-01 09:07:52

SQL索引語句

2025-05-12 08:27:25

2023-10-16 18:39:22

2024-05-14 08:20:59

線程CPU場景

2012-11-19 11:20:04

IT管理服務器調(diào)研報告

2021-09-15 06:21:36

Update語句數(shù)據(jù)庫

2021-09-30 07:26:15

MQ消息丟失

2024-06-06 11:57:44

2022-02-11 14:43:53

SQL語句C/S架構

2023-03-26 22:42:02

SQL關聯(lián)索引
點贊
收藏

51CTO技術棧公眾號