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