您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)業(yè)務(wù)卡單與MongoDB性能記錄與分析是怎樣的,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
事情的經(jīng)過是運(yùn)維,開發(fā)均告訴我業(yè)務(wù)出現(xiàn)卡單,并且均懷疑是傳統(tǒng)數(shù)據(jù)庫的問題,后面又覺得是MQ的問題,最后在中午的時(shí)候發(fā)現(xiàn)MONGODB 由于上線不嚴(yán)格(主要是MONGODB DDL 的操作和普通數(shù)據(jù)庫不一樣,開發(fā)的同學(xué)的自由度很大),所以造成數(shù)據(jù)都寫了不短的時(shí)間了,但相關(guān)的維護(hù)工作都沒有被告知相關(guān)部門。
一般來說對(duì)于傳統(tǒng)數(shù)據(jù)庫的問題發(fā)現(xiàn)其實(shí)從操作手段和方法上大致相同,而MONGO DB 作為NO SQL 數(shù)據(jù)庫,如何發(fā)現(xiàn)問題,又怎么處理有的時(shí)候倒不是很清楚。
問題1, 怎么查看慢查詢
一般來說在MONGODB 的維護(hù)中有這樣一個(gè)問題,就是盡量避免性能的影響將system.profile關(guān)閉,出了問題然后在去打開,然后在處理。起先我也是這樣去做的,但后期我發(fā)現(xiàn)這樣處理問題不OK。先說說為什么要這樣做,在說說為什么后面有要打開。
不打開system.profile的原因
1 在系統(tǒng)遇到大量慢語句后會(huì)大量的插入慢查詢的記錄到這個(gè)系統(tǒng)表
2 這樣操作會(huì)造成可能的系統(tǒng)性能二次傷害
思路到底正確不正確,我是這樣想的,如果有針對(duì)MONGODB 慢查詢的監(jiān)控或者統(tǒng)計(jì)數(shù)字,并且可以進(jìn)行一個(gè)報(bào)警,那其實(shí)system.profile是應(yīng)該打開的,哪怕會(huì)在出現(xiàn)大量慢查詢的時(shí)候出現(xiàn)一些性能的損失,但第一時(shí)間發(fā)現(xiàn)問題是重要的,與其事后發(fā)現(xiàn),不如一直準(zhǔn)備事前發(fā)現(xiàn),出了問題解決問題就好,哪怕到時(shí)候在關(guān)掉呢。
這里有2個(gè)方法
1 實(shí)時(shí)監(jiān)控,可以寫一個(gè)腳本定時(shí)去運(yùn)行,1秒一次查詢
db.currentOp({“secs_running”: {$gte: 3}})
這樣查詢的好處是,所有系統(tǒng)中不同的數(shù)據(jù)庫的慢語句都會(huì)被揪出來,然后直接寫到一個(gè)日志,或者在寫入到mongodb的表里面,然后可以去查詢或者進(jìn)行二次展示。
2 mongodb profiler
這個(gè)好處是簡(jiǎn)單,但如果你MONGODB 上的數(shù)據(jù)庫多,那每個(gè)數(shù)據(jù)庫都要設(shè)置打開,并且可能相比較第一種方法,靈活度差。好處是收集的信息更豐富,針對(duì)性更強(qiáng)。
具體看那個(gè)就看你要什么了,當(dāng)然也可以兩個(gè)都用。
例如你要是想找到 system.profile 中 查詢慢的,并且超過1秒的查詢,以最近的出現(xiàn)問題的語句從頭到尾的顯示。可以用下面的語句
db.system.profile.find( { op: { $eq : 'query' } } ,
{"millis": 1000}).sort( { ts : -1 } ).pretty()
當(dāng)然這樣做是否就OK 了,其實(shí)還差點(diǎn),如果developer 問你,HI 有慢查詢這段時(shí)間,MONGODB 的機(jī)器表現(xiàn)如何,是性能引起的問題嗎,諸如此類的問題,估計(jì)又得費(fèi)點(diǎn)心理,關(guān)鍵的是,誰知道那陣子的機(jī)器的性能如何。
其實(shí)對(duì)比其他的數(shù)據(jù)庫,例如AWR 報(bào)告,或者 DWV 視圖系統(tǒng),或者 sys 庫和 preformance_schema中的一些歷史表,或者從豐富的日志中,獲得所有想要的歷史和性能記錄在通過pgBadger 輸出成漂亮的分析報(bào)告。
那MONGODB 可以通過簡(jiǎn)單的mongostat 來將你要的東西來進(jìn)行一個(gè)記錄,寫一個(gè)腳本,定期的進(jìn)行日志的切換和廢棄,例如記錄一個(gè)禮拜的性能記錄,當(dāng)然間隔可以調(diào)整的大一些,然后對(duì)比慢查詢,你可以輕松的告訴開發(fā)或者其他人員,那時(shí)那刻的MONGODB 到底在經(jīng)歷了什么,臟頁,當(dāng)時(shí)數(shù)據(jù)插入,以及CPU的使用率等等。當(dāng)然如果你安裝了 ops manager 則管理和性能監(jiān)控會(huì)更加的方便和可視化。
當(dāng)然這還沒有完,你也可以使用一些MYSQL 中已經(jīng)熟知的工具集合中包含的MONGODB的工具來處理例如慢查詢,或者做一個(gè)簡(jiǎn)單的MONGODB 的 AWR。
上述就是小編為大家分享的業(yè)務(wù)卡單與MongoDB性能記錄與分析是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。