2012-02-15 53 views
4

有谁知道如何在MongoDb的服务器端添加查询超时?不是客户端超时(我正在使用C#驱动程序)。我遇到了客户端崩溃,Mongo连接中断的问题,但服务器继续执行查询。这会在服务器的队列中造成大量不必要/过时的查询。在MongoDb中的查询超时

+0

您可以添加您正在运行的查询的示例 - 您是否设置了任何写入安全选项?有些东西有点不清楚 - 如果连接消失,那么新的查询来自哪里,还是只有一段时间才会继续查询? – 2012-02-16 10:49:18

+1

@AdamC:可能有一个veeeery长时间运行的查询,即使连接死了,它仍然继续运行,阻止其他查询,尽管没有人想要它的结果。我有几个这些。 – 2012-02-16 11:16:54

+0

@Sergio说得对。我有多个客户在任何时候联系服务器。 X发送一个复杂的查询到数据库并随后崩溃......服务器继续执行该查询,即使它与X的连接已经结束。 – carlbenson 2012-02-16 14:40:42

回答

1

如果从您要停止/终止现有的客户端连接这些长时间运行的查询,那么你就需要手动杀死他们每个:

http://www.mongodb.org/display/DOCS/Viewing+and+Terminating+Current+Operation

或者,在启动你的新客户端可以做更多的程序设计(从日志中获取最后一次运行的查询,杀死他们,因为它们来自以前的客户端)。无论您是否可以通过编程方式识别想要杀死的操作并避免杀死其他人,这都是关键所在 - 可能需要您在应用程序中添加一些日志记录以跟踪正在进行的操作。

+1

以下发布是的,可能我们可以这样做,但不是检查'db.currentOp()'的cron结果,以查看secs_running更大的操作,比方说,600我希望mongo DB引擎杀死这样的查询... – Betlista 2013-01-30 12:58:02