【问题标题】:CURSOR_NOT_FOUND - my cron jobs started dying in the middleCURSOR_NOT_FOUND - 我的 cron 工作在中间开始死亡
【发布时间】:2012-06-08 21:49:33
【问题描述】:

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

我发现了两个类似的问题,但它们都不适用。在this case 中,他们使用了尚未准备好生产的 Mopped。 here 问题出在分页上。

我收到此错误消息

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.

有什么建议吗?

【问题讨论】:

  • 如果您要分叉孩子,请确保您与 Mongo 断开连接。
  • 谢谢!我还在调试这个,但所有的建议都非常有帮助。

标签: ruby mongodb rake


【解决方案1】:

来自 MongoDB 的“未找到游标”错误通常表示游标超时(在 10 分钟不活动后),但它可能表明客户端代码已变得混乱并且正在使用过时或关闭的游标,或者以某种方式损坏了光标。如果 3 小时的运行时间包括在调用 MongoDB 之间客户端上的大量忙碌时间,这可能会给服务器时间以使光标超时。

您可以在光标上指定一个无超时选项,以查看是否是您的光标的服务器超时导致了您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多