错误一:
调用代码:
String map = "function() { emit(this.offer_price, {count:1});}";
String reduce = "function(key, values) {";
reduce = reduce + "var total = 0;";
reduce = reduce + "for(var i=0;i<values.length;i++){total += values[i].count;}";
reduce = reduce + "return {count:total};}";
String result = "resultCollection";
MapReduceOutput mapReduceOutput = coll.mapReduce(map, reduce.toString(), result, null);
DBCollection resultColl = mapReduceOutput.getOutputCollection();
DBCursor cursor = resultColl.find();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
Exception in thread "main" com.mongodb.MongoException$Network: can't call something : /10.20.141.58:28018/test
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:227)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:305)
at com.mongodb.DB.command(DB.java:160)
at com.mongodb.DB.command(DB.java:183)
at com.mongodb.DB.command(DB.java:144)
at com.mongodb.DBCollection.mapReduce(DBCollection.java:1054)
at com.mongodb.DBCollection.mapReduce(DBCollection.java:1008)
at TestMongodb.main(TestMongodb.java:120)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
at org.bson.io.Bits.readFully(Bits.java:35)
at org.bson.io.Bits.readFully(Bits.java:28)
at com.mongodb.Response.<init>(Response.java:39)
at com.mongodb.DBPort.go(DBPort.java:128)
at com.mongodb.DBPort.call(DBPort.java:79)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:218)
... 7 more
解决方法:
options.socketTimeout = 2000;
错误2:
Out of semaphores to get db connection
查看源代码发现是连接池资源用尽:
public DBPort get(){
DBPort port = null;
if ( ! _waitingSem.tryAcquire() )
throw new SemaphoresOut();
但是,我明明是设置过了啊...
MongoOptions options = m.getMongoOptions();
options.autoConnectRetry = true;
options.connectionsPerHost = 500;
options.maxWaitTime = 5000;
options.socketTimeout = 0;
options.connectTimeout = 15000;
options.threadsAllowedToBlockForConnectionMultiplier = 4;
再仔细看了下初始化顺序,发现semaphore是在mongodb初始化的时候设置的。所以需要这样设置:
MongoOptions options = new MongoOptions();
options.autoConnectRetry = true;
options.connectionsPerHost = 1000;
options.maxWaitTime = 5000;
options.socketTimeout = 0;
options.connectTimeout = 15000;
options.threadsAllowedToBlockForConnectionMultiplier = 5000;
m = new Mongo(new ServerAddress("10.20.141.22", 28018), options);
分享到:
相关推荐
sudo vim /etc/yum.repos.d/mongodb-org-4.2.repo 写入: [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpg...
MongoDB客户端工具
这是一个mongodb的客户端,破解版!喜欢的朋友拿去吧!
MongoDB客户端管理工具(MongoVUE),图形显示,开发利器。速度快,安装简单,查询,创建和删除
mongodb客户端连接工具,非常简便好用的客户端连接工具
mongodb 客户端 NoSQLManagerforMongoDB 连接数据库工具
mongodb的java客户端的简单实例的实现,对文档和固定集合的操作
一个好的MongoDB客户端管理工具,可以大大提高MongoDB应用的开发效率。MongoDB自带的Shell是一个很好的工具,但是它在操纵大数据集时就没那么直观了。因此使用MongoDB客户端GUI管理工具就非常必要了
mongodb windows客户端-免安装版,支持64位windows操作系统。
mongodb客户端,下载免安装版,非常适合开发人员。欢迎使用,如有问题,可下方评论,请多多支持,请多多支持,
绿色破解版的MongoDB客户端工具.免安装,不是经常看到的13天试用版,是破解的哟
mongodb 客户端,经试用完胜mongo VUE,推荐
一款很好用的访问mongodb的客户端工具,类似于PL/SQL对Oracle的访问,简单易懂
用于ubuntu 16.04系统的mongodb客户端,亲测可以用的。
MongoVUE是一个MongoDB在windwos下的客户端管理工具 MongoVUE是一个创新的MongoDB桌面应用Windows操作系统,给你一个优雅的、高度可用的GUI界面来使用MongoDB。现在有一个更少的担心在管理你的网络数据。 ngoVUE使...
mongoDB客户端工具MongoVUE 1.5.3破解 破解方法见"破解方法.txt
用起来还不错,直接解压,运行exe程序即可