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



一个成功运行多年的 cron 作业在完成大约 80% 后突然开始死亡。不确定是因为有结果的集合稳步增长并达到了一些临界规模(对我来说似乎不是那么大)还是出于任何其他原因。我不确定如何调试它,我找到了作业死亡的用户并尝试为该用户运行作业,2 小时后收到CURSOR_NOTFOUND消息。昨天,它在为所有用户运行 3 小时后死亡。由于多种依赖关系和没有时间更改它,我仍在使用旧的mongoid(2.0.0.beta),但是mongo是最新的(我知道1.1.2之前版本中的错误)。

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

我收到此错误消息

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 的调用之间在客户端上包含大量繁忙时间,则可能会使服务器有时间使光标超时。

您可以在游标

上指定无超时选项,以查看是否是游标的服务器超时导致了问题。

最新更新