0

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

我发现了两个类似的问题,但它们都不适用。在这种情况下,他们使用了尚未投入生产的 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.

有什么建议么?

4

1 回答 1

2

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

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

于 2012-06-04T21:10:59.550 回答