千金药方——MongoDB疑难杂症的分析和优化

    xiaoxiao2026-05-06  10

    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详情如下:

    最新回复(0)