24 LockTimeout: Operation exceeded time limit waiting for a lock(操作等待锁时超出时间限制)
MongoDB含义
操作在等待所需的锁(例如数据库/集合级别)时超出了时间限制,被中止。未能及时获取到锁。
原因
长时间运行的操作或 DDL 命令(例如对集合执行的冲突管理操作)持有所需的锁;大量并发写入;或受 maxTimeMS 限制的操作在等待锁时到期。在索引/集合操作相互冲突时出现。
解决方法
找出持有锁的操作:用 db.currentOp() 检查活动和等待中的操作;必要时用 db.killOp() 终止它。将冲突的管理命令(索引创建、collMod、compact)移到非高峰时段。保持操作简短,避免不必要的长事务。如有需要,根据负载调整 maxTimeMS。
同一数据库的其他条目
- 10107 NotWritablePrimarynot master / not writable primary(不是 master / 不是可写的主节点)
- 91 ShutdownInProgressThe server is in the process of shutting down(服务器正在关闭)
- 189 PrimarySteppedDownPrimary stepped down while operation was in progress(操作进行期间主节点已降级)
- 7 HostNotFoundCould not find host(找不到主机)
- 175 QueryPlanKilledQuery plan killed during execution(查询计划在执行期间被终止)
- 11602 InterruptedDueToReplStateChangeOperation interrupted due to a replication state change(操作因复制状态变化而被中断)
- 136 CappedPositionLostCapped collection position lost(固定集合位置丢失)