Windows 微软 开源 Firefox linux mysql centos wordpress apache 程序员 编程 shell java Android nginx Python Ubuntu 云计算 google php

MongoDB疑難雜癥的分析和優化

Driver 使用問題

慎用local、admin:

• local:存儲節點自身配置信息,數據不會被同步,重要的數據不要存儲在 local 數據庫,避免數據丟失

• admin:存儲⽤用戶、⻆⾊等管理信息,寫⼊時會加 DB 級別互斥寫鎖,業務數據不要存儲在 admin 數據庫,影響性能

合理配置連接數:

thread per connection 網絡服務模型,每個線程需要1MB 的棧空間,⼤量連接時,線程切換開銷大;限制連接數資源; mongod 配置 net.maxIncomingConnections 參數,Driver通過 Connection String URI 的 maxPoolSize 參數來配置連接池⼤大⼩小

避免使用短連接:

短連接增加額外的 connect、auth、close、線程創建及銷毀開銷, MongoDB 鑒權性能問題,優化後性能提示10+倍

幹掉長(慢)請求

• 客戶端發起耗時請求,如遍歷集合、建索引、mapreduce、aggregation 等,主動斷開連接後,後端的請求仍然在執行

• currentOp + killOp 中止後端正在運行的請求

復制集問題

管理 oplog

• 支持在線動態修改 oplog 大小

• db.runCommand({collMod: “oplog.rs”, maxSize: 1024000000})

• 支持復制集成員根據同步進度自適應管理 oplog

• 支持設置⼀一個 oplog 保護時間戳,所有超過該時間戳的 oplog都會自動保留,支持全量、增量備份

避免無 id 索引的集合,盡量後臺建索引shard key 選擇

Shared Cluster問題

分片方式:範圍分片,hash分片

Shared key 選擇

PPT詳情如下:

a84163063f921d2c6a563dc24490373407e3aa60

7358f1e27be954a6e1aa2ef87e9ee8b5c51b83f7

52a23ca5137265cc2364354a627464ebd6e1f953

c1762d12a5ece778be333d51c93a9fef6d2f1cbb

dd7a2fcd653082e5e53d7f2e3b8e8070297c371a

3b303a9c98605d5b1fe5ebbfa04c17c6235e392a

6dbb16243886bdcef28353a5f680847411c88685

 

c0bed557588acf0aeb5b4e48fe570f750817bab2

3b303a9c98605d5b1fe5ebbfa04c17c6235e392a

 

4f852c20188c38c84f871bb8d4767db855b0f072

c83319c1fdefab289f8829035e91f0cc8bc16553

7528018cb53d56808a8adb8cc9e9b956ccafae5b

24fd81f59914153a208b2cb89b539c0ef21c2152

7bd20feb4d5944caf1781eb5b2308df15379368f

15d4c16a0ef569ca720a4defc605feb3f50dda09

fdebe26fc29f0e17376cf2059bc4181b6b8bd03b

7cfb74e799f19841de485ae3ccd45c1422bf64cd

c37ce8f78d71131ffab123923d720d85541503f8

804c4929f608b2e5c723808e3eb450f888fb9add

00e1a6e25783bfa30746924cd4a4c19fdf533f29

4bd923680e1d253b0320f7fe7e99706c2fad6ce1

1bf0c2547a98df59f7896b6cf1090244445b1ce2

62d803f4de6d63b5dd40040899b4734f4f3ad045

c65c98e5647d29c446d7a68c3be14f0f0be5164a

延伸阅读

    评论