公司業(yè)務(wù)調(diào)整,把一部分?jǐn)?shù)據(jù)由redis轉(zhuǎn)至MongoDB,業(yè)務(wù)在測(cè)試環(huán)境正常,生產(chǎn)環(huán)境上線后發(fā)現(xiàn)壓力一上來MongoDB的服務(wù)直接把CPU占滿了,和開發(fā)的同學(xué)分析了一下也參考了一下百度上類似的問題,最后定位原因:未使用索引。
創(chuàng)新互聯(lián)主要從事網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)桑日,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
解決方法很簡(jiǎn)單:對(duì)應(yīng)的關(guān)鍵字段創(chuàng)建索引即可。
參考命令如下:
>use Data; #進(jìn)入數(shù)據(jù)庫(kù)Data,注意區(qū)分大小寫;
>db.stats(); #查看數(shù)據(jù)庫(kù)的狀態(tài);
>db.getCollectionNames(); #查看所有表名;
>db.dynamic.find().limit(5); #查看dynamic表的前5條數(shù)據(jù);
>db.dynamic.find().count(); #統(tǒng)計(jì)dynamic表總共有多少數(shù)據(jù);
>db.dynamic.getIndexes(); #查詢表dynamic的索引
#新建索引:對(duì)dynamic的score字段以backgroud方式建立索引
>db.dynamic.ensureIndex({score:1} , {backgroud:true});
#狀態(tài)查看:20秒,每秒更新一次
mongostat -h 80.81.2.3 -p 27017 --rowcount 20 1
開始創(chuàng)建索引的字段沒找準(zhǔn),效果不明顯,后來對(duì)關(guān)鍵字段創(chuàng)建索引后CPU使用率斷崖式下跌