错误一:
调用代码:
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);
分享到:
相关推荐
MongoVUE作为MongoDB的客户端,为用户提供了直观且功能丰富的界面,使得数据操作变得更加直观和高效。 MongoVUE的主要特性包括: 1. **连接管理**:MongoVUE允许用户轻松地建立和管理与MongoDB服务器的连接。用户...
在Java中使用MongoDB客户端,首先需要引入MongoDB的Java驱动程序依赖。如果你使用的是Maven,可以在pom.xml文件中添加如下依赖: ```xml <groupId>org.mongodb <artifactId>mongodb-driver-sync <version>4.2.3...
2. 数据浏览:提供清晰的树形视图来展示数据库、集合、文档结构,用户可以方便地查看、编辑和删除数据。 3. 文档编辑:MongoVUE支持实时预览和编辑文档内容,支持JSON格式的输入和验证,避免语法错误。 4. 查询...
在这个例子中,我们创建了一个新的MongoDB客户端,连接到本地服务器的默认端口,获取了一个名为"mydb"的数据库中的"mycollection"集合,并插入了一条包含键值对的数据。 以上就是关于MongoDB C驱动接口、客户端软件...
而在JavaScript环境中,amoeba.io-mongodb-client是一个专门针对amoeba.io平台设计的MongoDB客户端库,它为开发者提供了与MongoDB交互的强大工具。 amoeba.io-mongodb-client的核心功能在于提供了一个简洁、高效的...
MongoClient是MongoDB官方提供的一款在Node.js环境中用于与MongoDB数据库进行交互的客户端库。MongoDB是一款流行的、基于文档的、非关系型数据库系统,而Node.js则是一种高效的、事件驱动的JavaScript运行环境,特别...
在大数据时代背景下,为了提高数据库的性能和可用性,采用分片技术是一种常见...当然,在实践中还需要注意错误处理、监控和性能调优等其他重要方面,这些知识可以通过继续深入学习MongoDB的官方文档和社区资源来获得。
MongoDB的命令行工具(mongo.exe)是MongoDB客户端的交互式界面,它也是一个JavaScript编译器,允许用户执行各种数据库操作。使用客户端进行基本操作时,用户可以通过它执行查询、插入、更新、删除等命令,也可以...
1. **`com.mongodb.client.MongoClients`**:这是创建MongoDB客户端连接的主要入口点。它提供了一个静态方法`create()`,用于根据提供的连接字符串或其他配置创建`MongoClient`实例。 2. **`...
- 连接MongoDB:介绍如何初始化MongoDB客户端,设置连接字符串,以及处理连接错误。 - 数据库操作:包括创建、打开数据库,以及执行CRUD(Create, Read, Update, Delete)操作的方法。 - 集合操作:如何创建、查询和...
1. 连接管理:PHP扩展提供了连接MongoDB服务器的方法,允许开发者创建和管理MongoDB客户端实例,以便与数据库进行交互。这些客户端可以是单服务器连接,也可以是复制集或分片集群。 2. 数据库操作:通过扩展,...
安装完成后,我们可以创建MongoDB客户端对象,这是连接到MongoDB服务器的基础。例如: ```php $mongoClient = new MongoClient("mongodb://localhost:27017"); ``` 接下来,文档会介绍如何选择或创建数据库。在...
最后,确保在完成所有操作后关闭MongoDB客户端: ```java mongoClient.close(); ``` 以上就是Java环境下MongoDB的基本操作,包括CRUD和图像数据的处理。实践中,可能还需要考虑错误处理、连接池管理、性能优化等更...
MongoDB Delete 2.0是Kettle插件中的一个组件,专为在Kettle数据集成环境中按特定条件删除MongoDB数据库中的集合数据而设计。Kettle,也被称为Pentaho Data Integration (PDI),是一款强大的ETL(提取、转换、加载)...
8. 版本控制:Robo 3T 1.2.1是该工具的一个版本,随着软件的发展,新的版本可能会增加更多功能和改进,如更好的性能、更多的自定义选项以及错误修复等。 总的来说,"Robo的mongodb的可视化工具"是学习和管理MongoDB...
MongoDB C驱动是开源的,它提供了基础的客户端功能,如连接到MongoDB服务器、执行查询、插入和更新文档等。开发者可以将其编译为适用于不同平台的库,并在Delphi XE3中使用。 在使用Delphi XE3与MongoDB集成时,...
MongoJS是基于JavaScript的一种轻量级的MongoDB客户端库,专为通过WebSockets与MongoDB数据库进行交互而设计。这个库允许Web应用程序直接在浏览器中执行常见的MongoDB操作,如增、删、改、查,从而实现了客户端与...
通常,我们会在全局应用程序初始化(如Global.asax.cs)中设置MongoDB客户端: ```csharp using MongoDB.Driver; protected void Application_Start() { // 创建MongoDB客户端实例 var client = new MongoClient...
最后,记得在完成所有操作后关闭MongoDB客户端连接: ```java mongoClient.close(); ``` 以上就是使用Java操作MongoDB的基本步骤。在实际项目中,你可能需要处理更复杂的查询和事务,以及错误处理和连接池管理...
**错误处理与性能优化** 在实际应用中,务必处理可能出现的异常,如网络故障、数据库未响应等。同时,对于大量数据的操作,可以考虑批量插入、使用异步方法提高性能,并利用MongoDB的索引功能提升查询速度。 总的来...