昨天, 磁盘满了, 看来下, 是被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代替。