实测 profiler:默认级别 0、slowms = 100;阈值 100 ms 时 20 次全表扫描一条 Slow query 日志都没有,5 ms 时是 28 条(20 个 find + 8 个 getMore);级别 1/2 往 system.profile 写;system.profile 默认 1 MB capped,级别 2 的开销是 1.15 倍且 18,000 条操作只剩 4,280 条;sampleRate = 0.1 只记约 10%。
实测 $currentOp 与 killOp:另一个连接里的慢 find 能看到完整命令、planSummary 与 microsecs_running;killOp 之后 0.0 秒收到 11601 Interrupted(不杀要 2.6 秒),$where 的 sleep 与 $function 的 JS 循环都能打断;maxTimeMS = 1000 在 1.02 秒后以 50 MaxTimeMSExpired 中止;$currentOp 也会列出后台线程和它自己。
实测 serverStatus 里该盯的指标:opcounters 的增量(insert 记文档数,serverStatus 自己也算一次 command)、metrics.document 与 queryExecutor 的 scanned/scannedObjects(无索引 49,891 个文档 vs 有索引 499)、connections(每个 pymongo 客户端 3 个连接)、wiredTiger.cache 与 opLatencies。
实测 mongostat 与 mongotop:默认列的含义与空闲时的数值;对着每秒 300/100/50/20 的已知负载,mongostat 首行吻合、后面几行因采样窗口不对齐而偏差;-o 与 --json;mongotop 的 total/read/write;批量写入时 insert 约 31 万/秒、dirty 1.8% → 4.4%;以及 qrw/arw 与 serverStatus 对不上的现象。
实测 SCRAM 认证:--auth 下未认证 code 13、localhost 例外;system.users 里只存 salt/iterationCount/storedKey/serverKey(SHA-256 是 15000 次迭代);手写 saslStart/saslContinue 握手(2 条命令)并验证 storedKey;密码错与用户不存在返回同一个 code 18;角色授予回收立即对同一连接生效;SCRAM-SHA-256 认证约 3.4 ms。
实测 mongod 的连接与线程模型:连接数从 4 加到 1003,线程数 73 → 1072(一个连接一个线程),RSS 约 73 KB/连接,关闭后线程回落但 RSS 不回落;--maxConns 50 时 44 成功 16 被拒(connections.rejected、日志 Connection refused…);available 与 --maxConns 的关系;新建连接比复用慢 7.4 倍。
实测 9.0.2 的读写 ticket:初始 10 个、由 throughputProbing 缓慢调整(64 线程持续 30 秒只涨到 13);40 个并发慢读最快 822 ms、最慢 3052 ms 且排队 29 个;改成固定并发后 ticket 下限为 5(设 4 返回 BadValue),16 并发总耗时 2737 ms,放大到 128 后 1198 ms 且不排队。
实测 FTDC:默认每秒采样、每块 300 个采样、目录上限 500 MB;文件是 BSON 块序列(type 0/1/2),type 1 是 zlib 压缩的参考文档加 varint 差值流;一个采样 5,036 个指标;自己写解码器还原出 opcounters.insert 的增量(2000+2000+2000+1000 = 7000)与真实插入一致;估算空闲实例每天约 12.5 MB。
本机真实搭建 1 配置服务器 + 2 分片 + 1 mongos 的分片集群,真实迁移 chunk,用 explain() 对比三种查询的分片路由结果,对照 mongos 真实源码解释快速路径与兜底路径。
真实冻结两个从节点的 oplog 应用,写入后对比 readConcern local/majority 的可见性差异,并触发一次真实的 writeConcern 超时,对照 MongoDB 真实源码解释多数派提交点机制。
本机真实跑起 3 节点副本集,亲眼见证两次真实选举(超时触发与 stepDown 触发),对照 MongoDB 真实源码解释 dry run、投票拒绝规则与当选后的 catch-up 阶段。
本机单节点副本集上真实抓取 insert/update/delete 的 oplog 记录,把同一条 update 记录用 applyOps 重放两遍验证幂等性,对照 MongoDB 真实源码逐条确认。