MongoDB的waring:ClientCursor::staticYield can't unlock b/c of recursive lock ns

昨天, 磁盘满了, 看来下, 是被mongodb的日志打满的。

通篇都是

2016-09-23T09:18:33.903+0800 [conn3213] warning: ClientCursor::staticYield can't unlock b/c of recursive lock ns:  top: { opid: 1183832, active: true, secs_running: 0, op: "query", ns: "keyword.key_suggests", query: { findAndModify: "key_suggests", query: { key: "童话故事100首" }, new: false, remove: true }, client: "10.16.23.20:58484", desc: "conn3213", threadId: "0x7f5327854700", connectionId: 3213, locks: { ^: "w", ^keyword: "W" }, waitingForLock: false, numYields: 0, lockStats: { timeLockedMicros: {}, timeAcquiringMicros: { r: 0, w: 4 } } }

查了下, http://stackoverflow.com/questions/4758377/mongodb-geting-client-cursoryield-cant-unlock-b-c-of-recursive-lock-warnin

this is usually means you are missing indexes on fields used in query.

这里使用的是findAndDelete(query)这个mongo方法,query里面使用的字段key,确实没有做index.

两种解决办法:

1. 对query中使用的filed建立index

2.不使用findAndDelete方法, 使用findOne && deleteOne代替。



猜你喜欢

转载自blog.csdn.net/smithallenyu/article/details/52635385