在EC2中读取操作异常MongoDB,但本地正常

时间:2013-11-18 05:16:34

标签: mongodb amazon-ec2

我的网络应用和mongo内置不同的ec2。

我在localhost中运行web应用程序并在ec2中连接mongo。 没关系。

但是我在ec2中部署了web应用程序。 它有例外

com.mongodb.MongoException$Network: Read operation to server /172.XX.XX.XX:27017 failed on database 
com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:253)
com.mongodb.DBTCPConnector.call(DBTCPConnector.java:216)
com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:288)
com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:273)
com.mongodb.DBCursor._check(DBCursor.java:368)
com.mongodb.DBCursor._hasNext(DBCursor.java:459)
com.mongodb.DBCursor.hasNext(DBCursor.java:484)
com.google.code.morphia.query.MorphiaIterator.hasNext(MorphiaIterator.java:43)
com.google.code.morphia.query.QueryImpl.asList(QueryImpl.java:286)

我的monogo congig

<bean id="mongoOptions" class="com.mongodb.MongoOptions">
<property name="autoConnectRetry" value="false" />
<property name="maxAutoConnectRetryTime" value="0" />
<property name="connectionsPerHost" value="10" />
<property name="connectTimeout" value="10000" />
<property name="cursorFinalizerEnabled" value="true" />
<property name="maxWaitTime" value="120000" />
<property name="threadsAllowedToBlockForConnectionMultiplier" value="5" />
<property name="socketTimeout" value="0" />
<property name="socketKeepAlive" value="false" />
<property name="safe" value="true" />
<property name="w" value="0" />
<property name="wtimeout" value="0" />
<property name="fsync" value="false" />
<property name="j" value="false" />
</bean>

2 个答案:

答案 0 :(得分:0)

在EC2配置中设置网络安全性,以允许MongoDb流量通过数据库框,默认为27017。

答案 1 :(得分:0)

万一有人来(因为我这样做了),我被困在mongodb在本地但不在我的ec2服务器上连接的同一问题上。..几个小时..这是解决方案,非常简单。

创建MongoDB集群时,将计算机的IP地址添加到了白名单。您需要获取EC2实例的“ IPv4公用IP”,并将其也添加到白名单中。