我想杀死运行超过 2 小时的慢查询。
我可以在 MongoOptions 类中使用套接字超时来终止 Spring Data mongo db 中的慢查询吗?
请帮忙。
我想杀死运行超过 2 小时的慢查询。
我可以在 MongoOptions 类中使用套接字超时来终止 Spring Data mongo db 中的慢查询吗?
请帮忙。
从客户端的角度来看,套接字超时将关闭连接,但如果仍有工作正在进行(例如,获取一批数据),服务器将继续处理查询。
如果您使用的是 2.6 之前的 MongoDB 服务器版本,您可以通过命令 .. 终止长时间运行的操作,db.killOp()
但是您必须确保您正在终止预期的客户端操作,而不是内部服务器线程。为您的长期运行的查询添加唯一性会很有帮助,$comment
以便可以通过db.currentOp(true)
.
MongoDB 2.6+ 添加了一个新的maxTimeMS
游标选项,以确保服务器在一定的累积处理时间(以毫秒为单位)后终止游标。您需要使用 2.12(或更新)版本的 MongoDB Java 驱动程序(可以在您的pom.xml
with中设置<mongodb.driver.version>
)。
有关maxTimeMS
套接字超时的更多背景信息,请参阅:maxTimeMS() 和 MongoDB 2.6 中的查询优化器自省。