我们有一个相对较小的 MongoDB 生产副本集。我们每秒执行大约 100 次操作 - 平衡读写。
每隔 15 分钟左右,我们就会发现读取响应时间出现峰值,同时在 mongostat 中我们可以看到页面错误率很高。以下是示例:
insert query update delete getmore command flushes mapped vsize res faults locked db idx miss % qr|qw ar|aw netIn netOut conn set repl time 106 56 103 *0 111 136|0 0 528g 1057g 1.35g 57 adcore:3.0% 0 0|0 0|0 99k 130k 140 prod_replication PRI 12:59:39 90 39 83 *0 94 100|0 0 528g 1057g 1.35g 40 adcore:2.1% 0 0|0 0|0 73k 80k 140 prod_replication PRI 12:59:40 108 57 93 *0 102 116|0 0 528g 1057g 1.36g 49 adcore:3.2% 0 0|0 0|0 90k 110k 140 prod_replication PRI 12:59:41 104 43 94 *0 103 120|0 0 528g 1057g 1.35g 47 adcore:3.0% 0 0|0 0|0 84k 99k 140 prod_replication PRI 12:59:42 92 51 83 *0 102 119|0 0 528g 1057g 1.36g 72 adcore:3.8% 0 0|0 0|0 80k 92k 140 prod_replication PRI 12:59:43 95 45 87 *0 100 118|0 0 528g 1057g 1.36g 968 adcore:3.0% 0 0|0 1|0 81k 88k 141 prod_replication PRI 12:59:44 27 17 39 *0 28 32|0 0 528g 1057g 1.37g 2294 adcore:0.8% 0 32|4 1|3 24k 36k 141 prod_replication PRI 12:59:45 198 88 160 *0 115 130|0 0 528g 1057g 1.37g 944 admin:0.4% 0 0|0 0|0 139k 177k 140 prod_replication PRI 12:59:46 98 49 89 *0 115 127|0 0 528g 1057g 1.37g 41 adcore:3.2% 0 0|0 0|0 87k 97k 140 prod_replication PRI 12:59:47 95 45 81 3 101 114|0 0 528g 1057g 1.37g 49 adcore:2.5% 0 0|0 0|0 82k 96k 140 prod_replication PRI 12:59:48
(抱歉格式不好)
有趣的是,MongoDB 同时与管理数据库进行交互,而大多数时候我们都看不到这种情况。
我意识到故障只是 MongoDB 进入磁盘。我正在寻找建议,如何定期追踪故障如此严重的原因,以及我们是否可以进行任何调整来减少故障,因为我们看到最大响应时间从 20 毫秒飙升到 1600 毫秒,这是不可接受的。
欢迎任何意见。