本篇文章為大家展示了mongodb 利用率高如何解決,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)是一家網(wǎng)站設(shè)計(jì)公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營(yíng)產(chǎn)品:成都響應(yīng)式網(wǎng)站建設(shè)、品牌網(wǎng)站制作、全網(wǎng)營(yíng)銷推廣。我們專注企業(yè)品牌在網(wǎng)站中的整體樹(shù)立,網(wǎng)絡(luò)互動(dòng)的體驗(yàn),以及在手機(jī)等移動(dòng)端的優(yōu)質(zhì)呈現(xiàn)。做網(wǎng)站、成都做網(wǎng)站、移動(dòng)互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運(yùn)營(yíng)、VI設(shè)計(jì)、云產(chǎn)品.運(yùn)維為核心業(yè)務(wù)。為用戶提供一站式解決方案,我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞析悅目的作品,網(wǎng)站的價(jià)值服務(wù)。Step1: 分析數(shù)據(jù)庫(kù)正在執(zhí)行的請(qǐng)求
db.currentOp()
client:請(qǐng)求是由哪個(gè)客戶端發(fā)起的?
opid:操作的opid,有需要的話,可以通過(guò) db.killOp(opid) 直接干掉的操作
secs_running/microsecs_running: 這個(gè)值重點(diǎn)關(guān)注,代表請(qǐng)求運(yùn)行的時(shí)間,如果這個(gè)值特別大,就得注意了,看看請(qǐng)求是否合理
query/ns: 這個(gè)能看出是對(duì)哪個(gè)集合正在執(zhí)行什么操作
lock*:還有一些跟鎖相關(guān)的參數(shù)
Step2:分析數(shù)據(jù)庫(kù)慢請(qǐng)求
MongoDB 支持 profiling 功能,將請(qǐng)求的執(zhí)行情況記錄到同DB下的 system.profile 集合里,profiling 有3種模式
profiling 設(shè)置文檔在這里,多看官網(wǎng)文檔
關(guān)閉 profiling
針對(duì)所有請(qǐng)求開(kāi)啟 profiling,將所有請(qǐng)求的執(zhí)行都記錄到 system.profile 集合
針對(duì)慢請(qǐng)求 profiling,將超過(guò)一定閾值的請(qǐng)求,記錄到system.profile 集合
默認(rèn)請(qǐng)求下,MongoDB 的 profiling 功能是關(guān)閉,生產(chǎn)環(huán)境建議開(kāi)啟,慢請(qǐng)求閾值可根據(jù)需要定制,如不確定,直接使用默認(rèn)值100ms。
設(shè)置100ms的慢請(qǐng)求
db.setProfilingLevel(1, { slowms: 100 })
在開(kāi)啟了慢請(qǐng)求 profiling 的情況下(MongoDB 云數(shù)據(jù)庫(kù)是默認(rèn)開(kāi)啟慢請(qǐng)求 profiling的),我們對(duì)慢請(qǐng)求的內(nèi)容進(jìn)行分析,來(lái)找出可優(yōu)化的點(diǎn),常見(jiàn)的包括。
profiling的結(jié)果輸出含義在這里,多看官網(wǎng)文檔
CPU殺手1:全表掃描
全集合(表)掃描 COLLSCAN,當(dāng)一個(gè)查詢(或更新、刪除)請(qǐng)求需要全表掃描時(shí),是非常耗CPU資源的,所以當(dāng)你在 system.profile 集合 或者 日志文件發(fā)現(xiàn) COLLSCAN 關(guān)鍵字時(shí),就得注意了,很可能就是這些查詢吃掉了你的 CPU 資源;確認(rèn)一下,如果這種請(qǐng)求比較頻繁,最好是針對(duì)查詢的字段建立索引來(lái)優(yōu)化。
一個(gè)查詢掃描了多少文檔,可查看 system.profile 里的 docsExamined 的值,該值越大,請(qǐng)求CPU開(kāi)銷越大。
> 關(guān)鍵字:COLLSCAN、 docsExamined
CPU殺手2:不合理的索引
有的時(shí)候,請(qǐng)求即使查詢走了索引,執(zhí)行也很慢,通常是因?yàn)楹侠斫⒉惶侠恚ɑ蛘呤瞧ヅ涞慕Y(jié)果本身就很多,這樣即使走索引,請(qǐng)求開(kāi)銷也不會(huì)優(yōu)化很多)
如下所示,假設(shè)某個(gè)集合的數(shù)據(jù),x字段的取值很少(假設(shè)只有1、2),而y字段的取值很豐富。
{ x: 1, y: 1 }
{
{ x: 1, y: 2 }
{
{ x: 1, y: 3 }
.
......
{
{ x: 1, y: 100000}
{
{ x: 2, y: 1 }
{
{ x: 2, y: 2 }
{
{ x: 2, y: 3 }
.
......
{
{ x: 1, y: 100000}
要服務(wù) {x: 1: y: 2} 這樣的查詢
db.createIndex( {y: 1 } ) 效果好,因?yàn)閥相同取值很少
d
db.createIndex( {y: 1, x: 1 } ) 效果好,因?yàn)閥相同取值少
一個(gè)走索引的查詢,掃描了多少條索引,可查看 system.profile 里的 keysExamined 字段,該值越大,CPU 開(kāi)銷越大。
>關(guān)鍵字:IXSCAN、keysExamined
CPU殺手3:大量數(shù)據(jù)排序
當(dāng)查詢請(qǐng)求里包含排序的時(shí)候,如果排序無(wú)法通過(guò)索引滿足,MongoDB 會(huì)在內(nèi)存李結(jié)果進(jìn)行排序,而排序這個(gè)動(dòng)作本身是非常耗 CPU 資源的,優(yōu)化的方法仍然是建立索引,對(duì)經(jīng)常需要排序的字段,建立索引。
當(dāng)你在 system.profile 集合 或者 日志文件發(fā)現(xiàn) SORT 關(guān)鍵字時(shí),就可以考慮通過(guò)索引來(lái)優(yōu)化排序。當(dāng)請(qǐng)求包含排序階段時(shí), system.profile 里的 hasSortStage 字段會(huì)為 true。
> 關(guān)鍵字:SORT、hasSortStage
======================MongodDB shard key片鍵選擇=====================
主要考慮key的「離散度」以及「頻率」,離散度越高越好,能更好的分散數(shù)據(jù);頻率越低越好,避免出現(xiàn)熱點(diǎn);
===========MongoDB 連接串樣例========================
正確連接分片集群的姿勢(shì)
要正確連接復(fù)制集,需要先了解下MongoDB的Connection String URI,所有官方的driver都支持以 Connection String 的方式來(lái)連接 MongoDB 分片集群。
下面就是Connection String包含的主要內(nèi)容
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
mongodb:// 前綴,代表這是一個(gè)Connection String
username:password@ 如果啟用了鑒權(quán),需要指定用戶密碼
hostX:portX 多個(gè) mongos 的地址列表
/database 鑒權(quán)時(shí),用戶帳號(hào)所屬的數(shù)據(jù)庫(kù)
?options 指定額外的連接選項(xiàng)
上述內(nèi)容就是mongodb 利用率高如何解決,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
分享文章:mongodb利用率高如何解決-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://aaarwkj.com/article8/gdpop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、ChatGPT、虛擬主機(jī)、軟件開(kāi)發(fā)、小程序開(kāi)發(fā)、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容