如何设置spring数据mongo查询的最大时间

时间:2014-08-11 09:55:43

标签: mongodb spring-mongo

我想杀死运行时间超过2小时的慢查询。

我可以在MongoOptions类中使用socket-timeout来杀死spring数据mongo db中的慢速查询吗?

请帮忙。

1 个答案:

答案 0 :(得分:1)

套接字超时将从客户端的角度关闭连接,但如果仍在进行中,服务器将继续处理查询(例如,获取一批数据)。

如果您使用的是2.6之前的MongoDB服务器版本,则可以通过db.killOp()命令终止长时间运行的操作。但是您必须确保要杀死预期的客户端操作而不是内部服务器线程。向长时间运行的查询添加唯一$comment可能很有帮助,因此可以通过db.currentOp(true)识别这些查询。

MongoDB 2.6+添加了一个新的maxTimeMS游标选项,以确保服务器在一定量的累积处理时间(以毫秒为单位)后杀死游标。您需要使用MongoDB Java驱动程序的2.12(或更新版本)(可以使用pom.xml<mongodb.driver.version>中设置)。

有关maxTimeMS和套接字超时的更多背景信息,请参阅:maxTimeMS() and Query Optimizer Introspection in MongoDB 2.6