定位思路与快速判断
常见瓶颈与典型症状
| 瓶颈维度 | 典型症状 | 关键指标或命令 | 优先动作 |
|---|---|---|---|
| 磁盘 I/O | 查询/写入抖动、页面换入换出、iostat util 高、await 高 | iostat -x、serverStatus.wiredTiger.cache | 升级至 SSD、增大 WiredTiger cacheSizeGB、优化索引与写入模式、必要时 分片 分摊 IOPS |
| 内存与 WiredTiger Cache | 读写放大、eviction 频繁、dirty 高、响应时间拉长 | serverStatus.wiredTiger.cache(eviction_target/trigger、dirty_target/trigger)、resident | 合理设置 cacheSizeGB、控制并发写入/索引构建、减少大结果集与排序 |
| CPU | 高并发下 CPU 打满、QPS 上不去 | top/htop、mongostat qr/qw | 优化查询与索引、减少 COLLSCAN/排序、必要时水平扩展(分片/读写分离) |
| 网络带宽 | 大结果集导出/迁移慢、吞吐上不去 | iftop/sar -n DEV、mongostat net_in/net_out | 增加带宽、压缩传输、分页/流式处理、多 mongos 负载均衡 |
| 连接与上下文 | 连接数暴涨、线程栈与内核缓冲占用高、超时增多 | serverStatus.connections、ulimit -n、netstat | 限制连接池、提升 ulimit -n、优化应用连接复用 |
| 查询与索引 | 慢查询、全表扫描、内存排序、计划不稳定 | explain(“executionStats”)、system.profile、planCache | 建立合适 复合索引、覆盖索引、避免 COLLSCAN/大排序、清理/重建低效索引 |
| 锁与并发 | 写冲突、长事务、secondary 延迟 | currentOp、replSetGetStatus | 缩短事务、降低锁争用、优化写入批次与并发度 |
| 配置与操作系统 | THP/调度器/文件句柄限制引发抖动 | /sys/kernel/mm/transparent_hugepage、/proc/sys/fs/file-max | 关闭 THP、调优 I/O 调度、提升文件句柄与进程数限制 |
| 上述症状与动作覆盖了 CentOS 上 MongoDB 最常见的瓶颈场景,可据此逐项排查与验证。 |
按阶段判断与对应优化
CentOS 上的关键配置与系统调优