中断获取从 MongDB 池中检索项目的许可

Amz*_*Amz 8 mongodb mongodb-query

我们在 Prod 环境中突然看到下面粘贴了一个奇怪的错误:

com.mongodb.MongoInterruptedException: Interrupted acquiring a permit to retrieve an item from the pool 
    at com.mongodb.internal.connection.ConcurrentPool.acquirePermit(ConcurrentPool.java:186) 
Run Code Online (Sandbox Code Playgroud)

我们有一个3.0.2的纯java mongo驱动版本。应用代码也是java,部署在tomcat服务器上。

导致原因的流程顺序是:

1.Future 任务跨 6 个集合运行,并尝试根据特定日期拉取数据 2. 只有一个集合被分片,并分为三个集合。集合具有主要、次要和仲裁者。

mongo服务器环境上应用的连接池或infra是否有什么特别的考虑。 mongo上的数据接近150GB

感谢任何回应。

小智 8

打电话时我遇到了同样的问题 Thread.currentThread().interrupt()

Jira 中甚至还有一张已关闭的票https://jira.mongodb.org/browse/JAVA-2091 上面写着

进行 mongo 调用时线程已被中断

它按设计工作。

另一个问题是这是否是正确的设计,因为调用interrupt()Thread 被认为是正确的做法。

不过,我不确定您的情况是否如此。


小智 5

对于所有遇到这个问题的人:

我碰巧只有在使用 IntelliJ Idea 进行调试时才会出现此问题。如果在代码中或正常处理流程中抛出异常,则不会出现问题。