我们正在使用具有副本集的mongo,更新速度平均为每秒500次。索引满足更新查询的要求,如果单独执行查询,则不超过0ms(根据分析器输出)。这些更新以几乎恒定的速率发生。
但是,当系统以该更新速率长时间运行时,所有操作将被阻塞40-50秒,并且所有操作将同时释放。这像循环一样。
1. All operations are taking less than 100 ms
2. All are blocked for 40000-50000 ms
3. All are release at the same time and now to point 1
以下是mongo日志中锁定更新之一的锁定状态。 A
locks: {
Global: {
acquireCount: {
r: 2,
w: 2
}
},
Database: {
acquireCount: {
w: 2
}
},
Collection: {
acquireCount: {
w: 1
}
},
oplog: {
acquireCount: {
w: 1
}
}
}
我想知道阻止更新的原因是否是这些锁定?如果可以,我该如何避免呢?还有其他原因导致这些阻止发生吗?预先感谢