You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将应用连接至Azure上的MongoDB时遇到锁等待中断问题

解决Azure Cosmos DB MongoDB API连接时的MongoInterruptedException问题

针对你遇到的com.mongodb.MongoInterruptedException: Interrupted waiting for lock异常,给出以下排查和解决方向:

  • 排查线程中断源
    异常本质是线程在等待锁时被中断,检查应用中是否存在自定义线程中断逻辑,或者线程池/框架的超时机制(如请求超时、连接超时)导致连接线程被强制中断。重点核对连接超时参数(如maxWaitTime)是否设置过短。

  • 调整MongoDB客户端连接池配置
    锁竞争可能是并发场景下连接池资源不足导致的,尝试调整以下参数:

    • 增大maxPoolSize,减少连接池内的锁竞争
    • 调整waitQueueTimeout,避免线程因长时间等待锁触发中断
  • 检查部署环境网络稳定性
    本地正常但部署环境异常,优先排查网络问题:

    • 确认部署环境到Azure Cosmos DB的网络链路是否稳定,有无防火墙、代理拦截
    • 核对TCP连接超时、请求超时等网络参数是否合理,避免因网络延迟导致线程被中断
  • 确认驱动与Cosmos DB版本兼容性
    即使更新到最新驱动,也要确保驱动版本与Azure Cosmos DB的Mongo API版本匹配。例如Cosmos DB Mongo API 4.0推荐使用MongoDB Java驱动4.4.x-4.7.x版本,可尝试降级到官方推荐的稳定兼容版本。

  • 正确处理中断异常
    如果业务逻辑中存在线程中断操作,在MongoDB代码块中捕获MongoInterruptedException并重置中断状态,避免驱动因中断信号抛出异常:

    try {
        // 执行MongoDB操作
        MongoCollection<Document> collection = mongoDatabase.getCollection("your-collection");
        // ...业务逻辑
    } catch (MongoInterruptedException e) {
        // 重置线程中断标记
        Thread.currentThread().interrupt();
        // 根据业务场景处理,比如重试、记录日志
        log.warn("MongoDB操作被中断,已重置中断状态", e);
    }
    

内容的提问来源于stack exchange,提问作者Jan Maniawski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:45:58