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