【五】MongoDB管理之生产环境说明
下面詳細(xì)說(shuō)明影響mongodb的系統(tǒng)配置,尤其在生產(chǎn)環(huán)境上。
1、生產(chǎn)環(huán)境推薦的平臺(tái)
- Amazon Linux
- Debian 7.1
- Red Hat / CentOS 6.2+
- SLES 11+
- Ubuntu LTS 12.04
- Ubuntu LTS 14.04
- Windows Server 2012 & 2012 R2
推薦使用官方最新的64位發(fā)行版本。
2、網(wǎng)絡(luò)配置
1)使用可信任的網(wǎng)絡(luò)環(huán)境
MongoDB總是運(yùn)行在可信任的網(wǎng)絡(luò)環(huán)境中,通過(guò)網(wǎng)絡(luò)規(guī)則設(shè)置避免所有不知來(lái)歷的機(jī)器訪問(wèn)。MongoDB應(yīng)該部署在獨(dú)立的環(huán)境中,這個(gè)環(huán)境僅僅能被應(yīng)用server,監(jiān)控服務(wù),mongodb組件等訪問(wèn)。
2)禁用HTTP接口
3、連接池管理
為了避免連接超載,確保客戶端維護(hù)合理的連接池大小,調(diào)整連接池的大小以適應(yīng)具體案例,一般而言,開(kāi)始連接池大小設(shè)置為數(shù)據(jù)庫(kù)請(qǐng)求并發(fā)數(shù)的110-115%。
4、硬件配置說(shuō)明
MongoDB對(duì)于服務(wù)器的硬件有一定的需求和限制。
1)分配充足的CPU和RAM
- 對(duì)于MMAPv1存儲(chǔ)引擎:由于它本身的并發(fā)模型設(shè)計(jì),MMAPv1并不需要更多的CPU核心,所以,增加CPU核心在一定程度上有所幫助但是性能提升并不顯著。增加RAM能夠幫助減少發(fā)生分頁(yè)錯(cuò)誤頻率。
- 對(duì)于WiredTiger存儲(chǔ)引擎:它是為多線程設(shè)計(jì),能夠利用很多CPU核心,所以,活躍線程總數(shù)對(duì)應(yīng)于CPU的數(shù)量能夠提升性能。隨著活躍并發(fā)操作數(shù)量增加到系統(tǒng)CPU個(gè)數(shù),系統(tǒng)吞吐量增加;隨著活躍并發(fā)操作數(shù)超過(guò)系統(tǒng)CPU的個(gè)數(shù)闕值,系統(tǒng)吞吐量下降;
這個(gè)系統(tǒng)闕值數(shù)依賴于你的應(yīng)用程序,你可以通過(guò)實(shí)驗(yàn)測(cè)量系統(tǒng)吞吐量來(lái)決定最優(yōu)的活躍并發(fā)數(shù)。mongostat工具的輸出能夠提供活躍并發(fā)的讀寫數(shù)據(jù)。在v3.2版本中,默認(rèn)使用WiredTiger存儲(chǔ)引擎,MongoDB可以利用操作系統(tǒng)文件系統(tǒng)cache和WiredTiger引擎的cache。WiredTiger v3.2 cache默認(rèn)設(shè)置為1GB或者內(nèi)存的60%,取其中大的。當(dāng)然,我們可以自己設(shè)置:一般而言,服務(wù)器物理內(nèi)存10G以下的,比較合理的設(shè)置值是小于等于3G;對(duì)于物理內(nèi)存大于10G的,可以大于3G。在v3.0版本中,cache默認(rèn)為1G或物理內(nèi)存的一半,取其中大的。
注意:storage.wiredTiger.engineConfig.cacheSizeGB僅僅限制WiredTiger cache大小,不會(huì)限制mongd服務(wù)占用內(nèi)存的總量。WiredTiger cache僅僅是mongodb使用內(nèi)存的一個(gè)組件,除此之外,mongodb還可以利用操作系統(tǒng)中文件系統(tǒng)cache。
如果一臺(tái)節(jié)點(diǎn)上只有一個(gè)mongodb實(shí)例,那么建議使用默認(rèn)的WiredTiger cache即可;如果一臺(tái)節(jié)點(diǎn)上有多個(gè)實(shí)例,那么你需要考慮減少WriedTiger cache的大小以滿足其他實(shí)例的需要。
2)使用SSDs(固態(tài)硬盤)
MongoDB在使用SATA SSDs上有很好的性價(jià)比。如果經(jīng)濟(jì)條件允許,建議使用SSDs。SSDs在隨機(jī)IO操作上的性能表現(xiàn)完全適應(yīng)于MMAPv1存儲(chǔ)引擎的更新模型。通過(guò)使用SSDs和增加內(nèi)存能夠提升I/O的吞吐量
3)NUMA設(shè)置
MongoDB運(yùn)行在NUMA系統(tǒng)上,能夠?qū)е乱恍┎僮鲉?wèn)題,如間斷性性能低下、高系統(tǒng)進(jìn)程占用等。所以需要對(duì)內(nèi)存交叉策略進(jìn)行配置以使主機(jī)是non-NUMA狀態(tài),MongoDB在啟動(dòng)時(shí)就會(huì)對(duì)系統(tǒng)的NUMA進(jìn)行檢查,如果NUMA配置降低性能了就會(huì)進(jìn)行警告提示。
- windows系統(tǒng)上NUMA配置
內(nèi)存策略通過(guò)BIOS配置,具體請(qǐng)參考系統(tǒng)資料
- liunx系統(tǒng)上NUMA配置
4)磁盤存儲(chǔ)系統(tǒng)
- swap分配:分配系統(tǒng)swap空間能夠避免內(nèi)存爭(zhēng)用、預(yù)防系統(tǒng)出現(xiàn)OOM殺死m(xù)ongod進(jìn)程等問(wèn)題。對(duì)于MMAPv1存儲(chǔ)引擎,mongodb不會(huì)在swap空間中存儲(chǔ)數(shù)據(jù)。(windows環(huán)境另算);對(duì)于WiredTiger存儲(chǔ)引擎,mongodb可能會(huì)在swap中存儲(chǔ)數(shù)據(jù)。
- RAID:建議使用raid10,其他不建議。
- 文件系統(tǒng)類型選擇:對(duì)于MMAPv1存儲(chǔ)引擎,建議xfs或ext4,如果可能,優(yōu)先選擇xfs。對(duì)于WiredTiger存儲(chǔ)引擎,強(qiáng)烈推薦使用XFS文件系統(tǒng),因?yàn)槟軌虮苊馐褂胑xt4產(chǎn)生的性能問(wèn)題。一般而言如果你用xfs文件系統(tǒng),操作系統(tǒng)內(nèi)核版本應(yīng)該在2.6.25及以后;如果使用ext4文件系統(tǒng),建議內(nèi)核版本2.6.23及以后。
5、其他建議配置(liunx)
- 對(duì)于存儲(chǔ)數(shù)據(jù)庫(kù)文件的磁盤卷,建議關(guān)閉atime
- 設(shè)置unlimit值大于20000
- 禁用Transparent Huge Pages
- 禁用NUMA
- 設(shè)置SELinux on Red Hat
- 如果使用分片集群,別忘了使用NTP同步主機(jī)的時(shí)間,這個(gè)是特別重要的。
?
轉(zhuǎn)載于:https://www.cnblogs.com/wangsicongde/p/7588646.html
總結(jié)
以上是生活随笔為你收集整理的【五】MongoDB管理之生产环境说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python网络数据采集
- 下一篇: 浅析图片XSS中的哪些技术问题