我正在尝试在 Java 循环中向 MongoDB 写入大量数据。我收到基于打开的连接数的错误。
我的理论是,由于 MongoDB 不是事务性的,因此可以同时打开大量连接。然而,Java 代码也能够非常快速地循环,在一定时间之后,循环迭代的数量开始超过可用连接的数量,Mongo 碰壁了。
我的代码看起来像这样。我已经看到建议不要这样做,m.close()
但你只会更快地得到错误。
public static void upsert(){
Mongo m = null;
DB db = null;
try {
m = new Mongo("localhost");
db = m.getDB("sempedia"); } catch (UnknownHostException e1) { e1.printStackTrace(); } catch (MongoException e1) { e1.printStackTrace(); }
// create documents
// I am doing an upsert - hence the doc, doc
DBCollection triples;
try {
triples = db.getCollection("triples");
triples.update(doc,doc,true,false);
} catch (MongoException e) { e.printStackTrace(); }
m.close();
}
在我的 java 控制台中,我收到此错误:
警告:使用 0 java.net.SocketException 确定 maxBSON 大小的异常:连接重置
mongodb 给出了这个错误:
10 月 25 日星期二 22:31:39 [initandlisten] 连接被拒绝,因为打开的连接太多:204 个,共 204 个
处理这个问题的最优雅的方法是什么?