在做db基準(zhǔn)測試的時候,qps,tps是衡量數(shù)據(jù)庫性能的關(guān)鍵指標(biāo)。QPS(Queryper second)每秒查詢量,TPS(Transactionper second)每秒事務(wù)量。
QPS:Queries / Seconds
Queries 是系統(tǒng)狀態(tài)值--總查詢次數(shù)
TPS:(Com_commit + Com_rollback) / Seconds
mysql中沒有直接的事務(wù)計數(shù)器,需要通過事務(wù)提交數(shù)和事務(wù)回滾數(shù)來計算。這是Mysql的兩個重要性能指標(biāo),需要經(jīng)常查看,和Mysql基準(zhǔn)測試的結(jié)果對比,如果值過高,就要盡快處理了。
生產(chǎn)一MySQL數(shù)據(jù)庫日常平均QPS為2000左右,峰值3500,但業(yè)務(wù)新需求上線后,其QPS竟高達(dá)2.2萬,是以前平均值的11倍,此種情況過于異常。詢問業(yè)務(wù)側(cè)是否上線大業(yè)務(wù)處理場景,業(yè)務(wù)側(cè)反饋無,業(yè)務(wù)系統(tǒng)和以前幾乎一樣。
既然業(yè)務(wù)側(cè)不能提供有用的信息,那只能從數(shù)據(jù)庫側(cè)著手分析了。先從數(shù)據(jù)庫監(jiān)控平臺查看:
1、近1小時qps曲線
近一小時內(nèi),數(shù)據(jù)庫QPS都在2.2萬以上
2、近1小時數(shù)據(jù)庫各類操作曲線
從圖上可以看出,每秒對數(shù)據(jù)庫的set操作高達(dá)19547次,在QPS中占比高達(dá)99%。
3、分析general log
從監(jiān)控平臺僅能看到set操作占比最高,但卻無法知道具體是什么set操作,基于此種情況,只好打開數(shù)據(jù)庫的generallog,分析上圖中set操作具體是什么。
打開數(shù)據(jù)庫的generallog,收集了7分鐘的信息,并進(jìn)行分析,分析結(jié)果如下:
“SETautocommit=0”操作,7分鐘內(nèi)執(zhí)行2143322次,每秒5103次
“SETautocommit=1”操作,7分鐘內(nèi)執(zhí)行2143331次,每秒次5103
“set session transaction readwrite”操作,7分鐘內(nèi)執(zhí)行1696531次,每秒4039次
“set session transaction readonly”操作,7分鐘內(nèi)執(zhí)行1696530次,每秒4039次
以上4種操作每秒執(zhí)行次數(shù)加起來就和數(shù)據(jù)庫的QPS差不多了,因些可以肯定就是這4種SET操作過于頻繁執(zhí)行,才引起數(shù)據(jù)庫的QPS過于異常。
4、解決方案
如果說以上4種set操作是為了對事務(wù)進(jìn)行有效控制,按一個事務(wù)內(nèi)包含一個SQL語句1:1的比例分配,那也應(yīng)該有相應(yīng)的select、update、delete、insert操作次數(shù),但從實際的情況來看,每秒僅有291次insert、2次select操作,明顯與事務(wù)控制操作次數(shù)不符。
引起這種現(xiàn)象的僅有業(yè)務(wù)系統(tǒng)代碼,我懷疑業(yè)務(wù)代碼,否存在以下情況:
運行大量空事物
引用的架構(gòu)中隱藏對事務(wù)的操作,但該操作不合理
把該現(xiàn)象及分析結(jié)果告之業(yè)務(wù)側(cè),讓其查看業(yè)務(wù)代碼,最終業(yè)務(wù)側(cè)反饋,他們使用的一個架構(gòu)中對事務(wù)的處理存在bug,并在下次業(yè)務(wù)發(fā)布時修復(fù)該bug。修復(fù)該bug的業(yè)務(wù)版本上線后,在數(shù)據(jù)庫側(cè)持續(xù)觀察兩天,再無出現(xiàn)該問題,即該問題也圓滿解決。
每秒數(shù)據(jù)庫執(zhí)行的查詢量即為QPS,它是衡量MySQL數(shù)據(jù)庫性能的一個主要指標(biāo),但此查詢量不僅包括select、DML語句,還包括其它如set類的操作,如果set類操作占比比較大的話,它很可能會影響到數(shù)據(jù)庫的性能;因此,我們在MySQL的日常運維過程中,還是要常常分析下QPS中各類操作的占比情況,把過于異常的操作占比情況分析出來,防范于未然。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/130155.html
摘要:分布式鎖的作用在單機(jī)環(huán)境下,有個秒殺商品的活動,在短時間內(nèi),服務(wù)器壓力和流量會陡然上升。分布式集群業(yè)務(wù)業(yè)務(wù)場景下,每臺服務(wù)器是獨立存在的。這里就用到了分布式鎖這里簡單介紹一下,以的事務(wù)機(jī)制來延生。 Redis 分布式鎖的作用 在單機(jī)環(huán)境下,有個秒殺商品的活動,在短時間內(nèi),服務(wù)器壓力和流量會陡然上升。這個就會存在并發(fā)的問題。想要解決并發(fā)需要解決以下問題 1、提高系統(tǒng)吞吐率也就是qps 每...
閱讀 1459·2023-01-11 13:20
閱讀 1814·2023-01-11 13:20
閱讀 1265·2023-01-11 13:20
閱讀 2006·2023-01-11 13:20
閱讀 4227·2023-01-11 13:20
閱讀 2885·2023-01-11 13:20
閱讀 1489·2023-01-11 13:20
閱讀 3811·2023-01-11 13:20