在準(zhǔn)備一個 MongoDB 部署時,應(yīng)該先了解一下應(yīng)用是如何在生產(chǎn)環(huán)境中運(yùn)行的。使用一個持久性可重復(fù)的策略來管理部署環(huán)境無疑是很有用的,它將減少你在生產(chǎn)環(huán)境中遇到意外麻煩的可能性。
最佳的策略應(yīng)包括以下幾點(diǎn):規(guī)劃設(shè)置原型,執(zhí)行負(fù)載測試,監(jiān)控關(guān)鍵參數(shù),并使用該信息來擴(kuò)展設(shè)置。關(guān)鍵在于積極監(jiān)控整個系統(tǒng),這能有助于了解生產(chǎn)系統(tǒng)在部署前的運(yùn)作方式,確定該在何處添加功能。例如,意識到了內(nèi)存使用中的潛在峰值,就有可能及時地防止寫鎖定情況的出現(xiàn)。
為了監(jiān)控部署,MongoDB 提供了多種命令。
該命令檢查所有運(yùn)行中的 mongod 實(shí)例的狀態(tài),返回數(shù)據(jù)庫操作的統(tǒng)計結(jié)果。這些統(tǒng)計命令包括插入數(shù)、查詢數(shù)、更新數(shù)、刪除數(shù)以及游標(biāo)的操作等。有些命令還能顯示碰到頁面錯誤的時間,以及寫鎖的時間百分比。這意味著你遇到一些問題:內(nèi)存低,寫入及性能上出現(xiàn)了一些問題。
先運(yùn)行 mongod 實(shí)例,然后在另一個命令行提示符中輸入命令,在 mongodb 安裝目錄的 bin 目錄下輸入 mongostat。
D:\set up\mongodb\bin>mongostat
該命令輸出結(jié)果如下:
http://wiki.jikexueyuan.com/project/mongodb/images/mongostat.png" alt="" />
該命令能夠記錄并報告 MongoDB 實(shí)例基于每個集合的讀寫活動。mongotop 默認(rèn)每秒返回一次結(jié)果,但我們可以修改間隔時間。你應(yīng)該檢查讀寫活動是否符合應(yīng)用預(yù)期狀態(tài)。理想情況下,不應(yīng)該出現(xiàn)對數(shù)據(jù)庫進(jìn)行過多的寫操作,過于頻繁地讀取磁盤,或者超出了工作集的容量等情況。
先運(yùn)行 mongod 實(shí)例,然后在另一個命令行提示符中輸入命令,在 mongodb 安裝目錄的 bin 目錄下輸入 mongotop。
D:\set up\mongodb\bin>mongotop
該命令輸出結(jié)果如下所示:
http://wiki.jikexueyuan.com/project/mongodb/images/mongotop.png" alt="" />
要想使 mongotop 命令返回信息的間隔時間變長,可以在 mongotop 命令的后面指定一個數(shù)字。
D:\set up\mongodb\bin>mongotop 30
上述命令表示每 30 秒返回數(shù)值。
除了 mongodb 工具之外,10gen 還提供了免費(fèi)的托管監(jiān)控服務(wù):MongoDB Management Service(MMS)。通過它所提供的儀表板,你可以查看整個集群的各個參數(shù)。