LarryDpk
发布于 2020-07-01 / 5608 阅读
0

MongoDB开发中遇到的问题记录

com.mongodb.mongowaitqueuefullexception too many threads are already waiting for a connection

报错信息

com.mongodb.MongoWaitQueueFullException: 
Too many threads are already waiting for a connection. Max number of threads (maxWaitQueueSize) of 500 has been exceeded.

原因

本地启动了太多进程,都在请求连接,超过了最大等待连接数,所以需要增加。

在使用异步程序时,要特别注意线程数问题。

方案1

修改连接URI:&waitQueueMultiple=1000&

参考资料:

https://docs.mongodb.com/manual/reference/connection-string/

方案2

MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
builder.connectionsPerHost(1000);
MongoClientOptions options = builder.build();
mongoClient = new MongoClient(URI, connectionOptions);

参考资料:

https://stackoverflow.com/questions/25346951/how-can-i-solve-mongowaitqueuefullexception

MongoDB: java.lang.IllegalStateException: state should be: open

原因

因为MongoDB已经关闭了,但程序还在使用。本次问题出现是因为异步程序在使用连接MongoDB,但没有阻塞,直接到后面的连接池关闭。

参考资料:

https://stackoverflow.com/questions/40670865/mongodb-java-lang-illegalstateexception-state-should-be-open