版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
OPPO萬(wàn)億級(jí)文檔數(shù)據(jù)庫(kù)MongoDB集群性能 Omongodb800%業(yè)務(wù)接入過(guò)程中經(jīng)常咨詢的幾個(gè)問(wèn)題:誤解一.丟數(shù)據(jù)誤解二.不安全,網(wǎng)上一堆說(shuō)mongodb被黑客攻擊,截圖一堆新聞?wù)`解三.DBA吐槽mongodb太難維護(hù)內(nèi)對(duì)mongodb誤解(丟數(shù)據(jù)、不安全、難維護(hù))?1.mongodb本身很優(yōu)秀,但是很多DBA和相應(yīng)開(kāi)發(fā)把控不住2.國(guó)內(nèi)系統(tǒng)性的mongodb資料相對(duì)欠缺mongodb機(jī)房多活方案-實(shí)現(xiàn)成本、性能、一致性"三豐收"機(jī)房B戶端mongodb集群godb機(jī)房B戶端mongodb集群godb機(jī)房A戶端oppooppo互聯(lián)網(wǎng)mongodb:楊亞洲mongodb集群2.數(shù)據(jù)一致性問(wèn)題3.人力原因B機(jī)房ClientC機(jī)房ClientA機(jī)房mongosB機(jī)房mongosA機(jī)房mongod(主)B機(jī)房mongodB機(jī)房ClientC機(jī)房ClientA機(jī)房mongosB機(jī)房mongosA機(jī)房mongod(主)B機(jī)房mongod(從)A機(jī)房mongod(主)mongod(從)B機(jī)房mongod(從)mongod(從)shard-1A機(jī)房Clientoppo互聯(lián)網(wǎng)mongodb:楊亞洲戶端代理層C機(jī)房mongosC機(jī)房mongos 存儲(chǔ)層B機(jī)房ClientB機(jī)房mongosA機(jī)房mongosoppo互聯(lián)網(wǎng)mongodb:楊亞洲A機(jī)房B機(jī)房ClientB機(jī)房mongosA機(jī)房mongosoppo互聯(lián)網(wǎng)mongodb:楊亞洲A機(jī)房mongod(主)mongodA機(jī)房mongod(主)mongodB機(jī)房mongod(從)B機(jī)房mongod(從)A機(jī)房mongod(從)A機(jī)房mongod(從)B機(jī)房mongod(從)B機(jī)房mongod(從)shard-nshard-1A機(jī)房Client戶端代理層存儲(chǔ)層方案三:異地三機(jī)房多活方案(1mongod+1mongod+1mongod方式)-解決跨機(jī)房寫(xiě)戶端C機(jī)房ClientC機(jī)房mongosA機(jī)房mongos代理層戶端C機(jī)房ClientC機(jī)房mongosA機(jī)房mongos代理層存儲(chǔ)層A機(jī)房ClientB機(jī)房ClientB機(jī)房mongosoppo互聯(lián)網(wǎng)mongodb:楊亞洲A機(jī)房mongod(主)A機(jī)房mongod(主)mongod(從)shard-1B機(jī)房mongod(從)mongod(從)B機(jī)房mongod(主)A機(jī)房mongod(從)mongod(主)A機(jī)房mongod(從)B機(jī)房mongod(從)2.A機(jī)房數(shù)據(jù)轉(zhuǎn)發(fā)到分片shard-1,B機(jī)房數(shù)據(jù)轉(zhuǎn)發(fā)到分片shard-2,C機(jī)房數(shù)據(jù)轉(zhuǎn)發(fā)到分片mongodb線程模型瓶頸及其優(yōu)化方法mongodb默認(rèn)線程模型(一個(gè)鏈接一個(gè)線程)oppo互聯(lián)網(wǎng)mongodb:楊亞洲worker線程12nr新連接fd-n新連接client客戶端建..1.listener線程負(fù)責(zé)接受所有的客戶端鏈接2.listener線程每接收到一個(gè)新的客戶端鏈接就創(chuàng)建一個(gè)線程,該線程只負(fù)責(zé)處理該鏈接請(qǐng)求處理。型缺陷:2.當(dāng)鏈接關(guān)閉的時(shí)候,線程銷毀,頻繁的線程創(chuàng)建和消耗進(jìn)一步增加系統(tǒng)負(fù)載mongodb默認(rèn)線程模型(動(dòng)態(tài)線程模型:?jiǎn)侮?duì)列方式)狀態(tài)機(jī)調(diào)模塊oppo互聯(lián)網(wǎng)mongodb:楊亞洲worker動(dòng)態(tài)線程池12n全局隊(duì)列任務(wù)n任務(wù)1競(jìng)爭(zhēng)競(jìng)爭(zhēng)client請(qǐng)求client請(qǐng)求..1.該模型把一次請(qǐng)求轉(zhuǎn)換為多個(gè)任務(wù):mongodb數(shù)據(jù)讀操作(網(wǎng)絡(luò)IO)、db層數(shù)據(jù)訪問(wèn)(磁盤IO)。2.任務(wù)入隊(duì)到全局隊(duì)列,線程池中的線程從隊(duì)列中獲取任務(wù)執(zhí)行。4.當(dāng)任務(wù)太多,系統(tǒng)壓力大的時(shí)候,線程池中線程數(shù)動(dòng)態(tài)增加;當(dāng)任務(wù)減少,系統(tǒng)壓力減少的時(shí)候,線程池中線程數(shù)動(dòng)態(tài)減少;缺陷:mongodb動(dòng)態(tài)adaptive線程模型,適用于請(qǐng)求處理比較耗時(shí)的場(chǎng)景,如數(shù)據(jù)庫(kù)服務(wù)mongodb優(yōu)化后線程模型(動(dòng)態(tài)線程模型-多隊(duì)列方式)hash散列任務(wù)n...任務(wù)1...client請(qǐng)求任務(wù)n...任務(wù)1oppo互聯(lián)網(wǎng)mongodb:楊亞洲..任務(wù)n任務(wù)1hash散列任務(wù)n...任務(wù)1...client請(qǐng)求任務(wù)n...任務(wù)1oppo互聯(lián)網(wǎng)mongodb:楊亞洲..任務(wù)n任務(wù)112線程n-1n務(wù)入隊(duì)的時(shí)候按照session鏈接hash散列到各自的隊(duì)列,工作線程獲取獲取任務(wù)的時(shí)候,同理通過(guò)同樣的1.OPPO自研mongodb內(nèi)核多隊(duì)列adaptive線程模型優(yōu)化,特定場(chǎng)景性能有很好的提升,適用于請(qǐng)求處理比較耗時(shí)的場(chǎng)景,如數(shù)據(jù)庫(kù)服務(wù)。configmongodmongod(mongod(mongos競(jìng)爭(zhēng)獲取分布式鎖mongos1mongosconfigmongodmongod(mongod(mongos競(jìng)爭(zhēng)獲取分布式鎖mongos1mongos2...oppo互聯(lián)網(wǎng)mongodb:楊亞洲mongos_n源分片列源分片列表mongod(ardmongod(mongod(mongod(ardmongod(mongod(mongod(mongodmongodshard_n...新增分mongod(mongod新增分mongod(mongod(mongod(mongod(新增分mongod(mongod...擴(kuò)容新增分片列表mongodmongod(新增分mongod(mongod1.多個(gè)mongos代理競(jìng)爭(zhēng)分布式鎖,獲取鎖成功的代理選擇源分片列表中的一個(gè)分片進(jìn)行moveChunk操作。注意:同一時(shí)刻只會(huì)遷移一個(gè)分片的數(shù)據(jù)。2.缺陷:由于整個(gè)集群同一個(gè)時(shí)刻只能遷移一個(gè)分片數(shù)據(jù),所以遷移速度很慢。并行遷移-集群擴(kuò)容速率N倍提升優(yōu)化實(shí)踐(優(yōu)化后)mongos1mongos2mongos_n...mongod(ardmongod(mongod(shardmongos1mongos2mongos_n...mongod(ardmongod(mongod(shard_nmongodmongod(...mongod(ardmongod(mongod源分片列表mongod(configmoconfigmongodmongod(mongod(oppo互聯(lián)網(wǎng)mongodb:楊亞洲擴(kuò)容新增分片列表mongod擴(kuò)容新增分片列表mongod(新增分mongod(mongod(mongod(mongod(mongod(mongod(mongodmongod新增分新增分...1.在特定代理增加并行遷移配置,該代理可以同時(shí)觸發(fā)遷移源分片列表中多個(gè)分片的chunk到目標(biāo)不同分片。2.為了避免沖突和提升遷移速度,同一時(shí)刻源分片列表中任一分片只能同時(shí)遷移一個(gè)chunk。同理,目標(biāo)分片列表中的分片同一時(shí)刻只能接受一個(gè)chunk。mongodb性能數(shù)倍提升優(yōu)化實(shí)踐mongodb提升優(yōu)化實(shí)踐案例1.千億級(jí)數(shù)據(jù)量mongodb集群性能數(shù)倍提升優(yōu)化實(shí)踐-背景2.數(shù)據(jù)量千億級(jí)3.前期寫(xiě)多讀少,后期讀多寫(xiě)少4.高峰期讀寫(xiě)流量百萬(wàn)級(jí)5.時(shí)延敏感7.數(shù)據(jù)增長(zhǎng)快,不定期擴(kuò)容8.同城多活集群億級(jí)數(shù)據(jù)量mongodb集群性能數(shù)倍提升優(yōu)化實(shí)踐-優(yōu)化過(guò)程rnwmajorityOK4.enableMajorityReadConcern關(guān)閉,有性能損耗。mongodb群性能數(shù)倍提升優(yōu)化實(shí)踐-優(yōu)化過(guò)程優(yōu)化策略2:存儲(chǔ)引擎cache淘汰策略優(yōu)化wiredtiger存儲(chǔ)引擎cache淘汰策略相關(guān)的幾個(gè)配置如下:wiredtiger淘汰相關(guān)配置值工作原理eviction_target當(dāng)用掉的內(nèi)存超過(guò)總內(nèi)存的百分比到eviction_target,后臺(tái)evict線程開(kāi)始淘汰eviction_trigger當(dāng)用掉的內(nèi)存超過(guò)總內(nèi)存的eviction_trigger,用戶線程也開(kāi)始淘汰eviction_dirty_target當(dāng)cache中臟數(shù)據(jù)比例超過(guò)eviction_dirty_target,后臺(tái)evict線程開(kāi)始淘汰eviction_dirty_trigger當(dāng)cache中臟數(shù)據(jù)比例超過(guò)eviction_dirty_trigger,用戶線程也開(kāi)始淘汰evict.threads_min4后臺(tái)evict線程最小線程數(shù)evict.threads_max4后臺(tái)evict線程最小線程數(shù)wiredtiger存儲(chǔ)引擎cache淘汰策略優(yōu)化后配置:eviction_target:75%,eviction_trigger:97%,eviction_dirty_target:%3,eviction_dirty_trigger:25%,evict.threads_min:4,evict.threads_max:16總體思想:evict線程盡早淘汰臟頁(yè)page到磁盤,增加evict淘汰線程數(shù)加快臟數(shù)據(jù)淘汰,避免戶請(qǐng)求線程進(jìn)行臟數(shù)據(jù)淘汰。億級(jí)數(shù)據(jù)量mongodb集群性能數(shù)倍提升優(yōu)化實(shí)踐-優(yōu)化過(guò)程優(yōu)化策略3:存儲(chǔ)引擎checkpoint優(yōu)化存儲(chǔ)引擎checkpoint檢測(cè)點(diǎn),把當(dāng)前存儲(chǔ)引擎臟數(shù)據(jù)全部記錄到磁盤。觸發(fā)條件如下:1.固定周期做一次checkpoint快照,默認(rèn)60s2.增量journal日志達(dá)到2G少部分實(shí)例存在如下現(xiàn)象:一會(huì)兒磁盤IO幾乎空閑0%,一會(huì)兒磁盤IO短暫性100%。進(jìn)行如下優(yōu)化后可以緩解該問(wèn)題:checkpoint=(wait=30,log_size=1GB)kpointcheckpointIO戶端代理層oppo互聯(lián)網(wǎng)mongodb:楊亞洲存儲(chǔ)層億級(jí)數(shù)據(jù)量mongodb集群性能數(shù)倍提升優(yōu)化實(shí)踐-優(yōu)化過(guò)程戶端代理層oppo互聯(lián)網(wǎng)mongodb:楊亞洲存儲(chǔ)層ClientClientClientClientB機(jī)房mongosCB機(jī)房mongosC機(jī)房mongosA機(jī)房mongosA機(jī)房mongos優(yōu)化前架構(gòu)圖AA機(jī)房mongodB機(jī)房mongodA機(jī)房mongodB機(jī)房mongodC機(jī)房mongodC機(jī)房mongodshard-1..1.代理緩存所有客戶端的鏈接信息到內(nèi)存中,并定期更新到config庫(kù)的system.sessions表中。2.大流量大數(shù)據(jù)量集群客戶端鏈接眾多,大量更新sessions表,最終主分片性能下降引起整個(gè)集群性能瞬間數(shù)倍下戶端代理層oppo互聯(lián)網(wǎng)mongodb:楊亞洲存儲(chǔ)層..A機(jī)房mongodB機(jī)房mongodshard-1C機(jī)房mongodB機(jī)房mongodA機(jī)房戶端代理層oppo互聯(lián)網(wǎng)mongodb:楊亞洲存儲(chǔ)層..A機(jī)房mongodB機(jī)房mongodshard-1C機(jī)房mongodB機(jī)房mongodA機(jī)房mongodC機(jī)房mongodClientClientClientClientB機(jī)房mongosCB機(jī)房mongosC機(jī)房mongosA機(jī)房mongosA機(jī)房mongosons優(yōu)化后架構(gòu)圖1.config庫(kù)的system.sessions表啟用分片功能。2.mongos定期更新優(yōu)化為散列到不同時(shí)間點(diǎn)進(jìn)行更新。億級(jí)數(shù)據(jù)量mongodb集群性能數(shù)倍提升優(yōu)化實(shí)踐-優(yōu)化過(guò)程優(yōu)化策略4:sharding集群system.session優(yōu)化1.之前代理集中式更新單個(gè)分片,優(yōu)化為散列到不同時(shí)間點(diǎn)更新多個(gè)分片。2.該優(yōu)化后system.sessions表更新引起的瞬間性能數(shù)倍降低和大量慢日志問(wèn)題得到了解決。億級(jí)數(shù)據(jù)量mongodb集群性能數(shù)倍提升優(yōu)化實(shí)踐-優(yōu)化過(guò)程化策略5:tcmalloc內(nèi)存優(yōu)化db.serverStatus().tcmalloc監(jiān)控發(fā)現(xiàn)部分mongod實(shí)例pageheap、內(nèi)存碎片等消耗過(guò)高。通過(guò)借助gperftools三方庫(kù)中tcmalloc內(nèi)存管理模塊,實(shí)時(shí)動(dòng)態(tài)調(diào)整tcmalloc內(nèi)存ReleaseRate,盡早釋放內(nèi)存,避免存儲(chǔ)引擎獲取cache過(guò)程阻塞變慢。mongodb升優(yōu)化實(shí)踐1.集群存儲(chǔ)離線數(shù)據(jù)2.集群總數(shù)據(jù)量萬(wàn)億級(jí)3.前期主要為數(shù)據(jù)寫(xiě)入,要求萬(wàn)億級(jí)數(shù)據(jù)幾周內(nèi)盡快全部寫(xiě)入集群4.后期主要是讀流量,單次查詢數(shù)據(jù)條數(shù)比較多,要求快速返回5.每隔一定時(shí)間周期(周為單位)會(huì)有持續(xù)性大量寫(xiě)入mongodb提升優(yōu)化實(shí)踐使用優(yōu)化等基礎(chǔ)性優(yōu)化策略同樣適用于該集群,具體詳見(jiàn)《分享主題六:百萬(wàn)級(jí)高并發(fā)讀寫(xiě)/千億級(jí)數(shù)據(jù)量mongodb集群性能數(shù)倍提升優(yōu)化實(shí)踐》mongodb升優(yōu)化實(shí)踐優(yōu)化策略2:存儲(chǔ)模型優(yōu)化前狀況{"_id":ObjectId("5fh2ebd18856960dbac31abc"),"characteristic":"xxxx","key1":"***","keyn":"***",}1.以上為單條數(shù)據(jù)的數(shù)據(jù)模型,該集群總數(shù)據(jù)量萬(wàn)億級(jí)。2.數(shù)十萬(wàn)條數(shù)據(jù)擁有同樣的characteristic特性,總特性數(shù)總計(jì)數(shù)百萬(wàn)個(gè)。3.一次性查詢數(shù)十個(gè)characteristic很慢。cIO,查詢成為瓶頸。mongodb提升優(yōu)化實(shí)踐優(yōu)化策略2:第一輪數(shù)據(jù)存儲(chǔ)模型優(yōu)化:{"_id":ObjectId("5f29ebd18856960dbac31abc"),"characteristic":"xxxx""group":[{"key1":"***"},#該characteristic下第一條數(shù)據(jù){"key1":"***"}#該characteristic下第n條數(shù)據(jù)]}該數(shù)據(jù)模型把相同characteristic特性的數(shù)十萬(wàn)數(shù)據(jù)合并到為一條數(shù)據(jù),減少磁盤IO操作,整個(gè)讀性能會(huì)有近百倍提升。瓶頸點(diǎn):該輪優(yōu)化解決了讀瓶頸,卻引入了新的寫(xiě)瓶頸。1.通過(guò)$addToSet方式向group數(shù)組中去重追加數(shù)據(jù),去重遍歷過(guò)程越來(lái)越慢,數(shù)據(jù)長(zhǎng)度越來(lái)越長(zhǎng),寫(xiě)性能成為新的瓶頸。mongodb升優(yōu)化實(shí)踐優(yōu)化策略2:第二輪數(shù)據(jù)存儲(chǔ)模型優(yōu)化:{"_id":ObjectId("5f29ebd18856960dbac31abc"),"characteristic":"xxxx","heshNum":num,"group":[{"key1":"***",},#該characteristic下第一條數(shù)據(jù){"key1":"***",}#該characteristic下第n條數(shù)據(jù)]}如上,把同一個(gè)characteristic特征的數(shù)十萬(wàn)數(shù)據(jù)散列為500份,這樣合并后group
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025北京同仁堂鄂爾多斯市藥店有限公司招聘10人參考考試題庫(kù)及答案解析
- 深度解析(2026)《GBT 26732-2025輪胎翻新工藝》(2026年)深度解析
- 深度解析(2026)《GBT 25915.5-2010潔凈室及相關(guān)受控環(huán)境 第5部分:運(yùn)行》
- 2025廣東佛山市順德區(qū)杏壇中心小學(xué)后勤服務(wù)人員招聘1人參考考試題庫(kù)及答案解析
- 2025安徽淮北相山區(qū)招考村(社區(qū))后備干部66人考試筆試備考題庫(kù)及答案解析
- 深度解析(2026)《GBT 25771-2010滾動(dòng)軸承 鐵路機(jī)車軸承》(2026年)深度解析
- 2025福建泉州晉江市博物館招聘編外人員1人參考考試試題及答案解析
- 高中生涯規(guī)劃教育的區(qū)域推進(jìn)機(jī)制-基于上海市“學(xué)生發(fā)展指導(dǎo)”試點(diǎn)經(jīng)驗(yàn)
- 2025山西長(zhǎng)治市上黨區(qū)公益性崗位人員招聘50人參考考試題庫(kù)及答案解析
- 《利用三角形全等測(cè)距離》數(shù)學(xué)課件教案
- 國(guó)家開(kāi)放大學(xué)《團(tuán)體工作#》補(bǔ)修課形考答案
- 云南中煙工業(yè)公司招聘考試真題2025
- 2026包鋼(集團(tuán))公司新員工招聘(322人)筆試考試參考試題及答案解析
- 浙江大學(xué)《普通化學(xué)》(第6版)筆記和課后習(xí)題(含考研真題)詳解
- 2026年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識(shí)考試題庫(kù)500道附答案【輕巧奪冠】
- 河南省南陽(yáng)市2025-2026學(xué)年高二上學(xué)期期中語(yǔ)文試題(含答案)(解析版)
- T-CRCRA 010-2023 非物質(zhì)文化遺產(chǎn)傳承與保護(hù)規(guī)范
- 2025年辦公家具采購(gòu)合同
- 【完整版】2026 年國(guó)考《行測(cè)》真題(地市級(jí)卷)
- 2025重慶水務(wù)集團(tuán)股份有限公司招聘64人考試筆試參考題庫(kù)附答案解析
- 贈(zèng)與合同范本房屋模板
評(píng)論
0/150
提交評(píng)論