CURSOR_NOT_FOUND – 我的cron工作开始在中间死亡

一项成功运行多年的cron工作在完成约80%后突然开始死亡。 不确定是不是因为收集结果正在稳步增长并达到一些临界尺寸(对我来说似乎没有那么大)或任何其他原因。 我不知道如何调试这个,我发现该作业死亡的用户并试图为该用户运行该作业,2小时后收到CURSOR_NOTFOUND消息。 昨天它在所有用户运行3小时后死亡。 我仍在使用旧的mongoid(2.0.0.beta),因为多次依赖并且没有时间来改变它,但是mongo是最新的(我知道1.1.2之前的版本中的bug)。

我发现了两个类似的问题,但它们都不适用。 在这种情况下 ,他们使用了Mopped,它不是生产准备好的。 这里的问题在于分页。

我收到此错误消息

MONGODB cursor.refresh() for cursor xxxxxxxxx rake aborted! Query response returned CURSOR_NOT_FOUND. Either an invalid cursor was specified, or the cursor may have timed out on the server. 

有什么建议?

MongoDB中的“找不到游标”错误通常表示游标超时(10分钟不活动后),但可能表示客户端代码已混淆并使用过时或关闭的游标或已损坏游标不知何故。 如果3小时运行时在调用MongoDB之间在客户端上占用了大量繁忙时间,那么可能会使服务器有时间使光标超时。

您可以在游标上指定no-timeout选项,以查看是否是导致问题的游标的服务器超时。