连接到副本集时偶尔会出现MongoTimeoutException

时间:2014-07-09 05:31:50

标签: java mongodb amazon-web-services timeout replicaset

我在连接到副本集时偶尔会遇到com.mongodb.MongoTimeoutException个错误。我使用从rs.status()输出的域名进行连接,例如,mongo1.productionmongo2.production,但我仍然可以获得超时。

我的代码如下:

MongoClientOptions options = new MongoClientOptions.Builder()
                    .writeConcern(WriteConcern.ACKNOWLEDGED)
                    .readPreference(ReadPreference.primaryPreferred())
                    .connectTimeout(30000)
                    .socketTimeout(60000)
                    .connectionsPerHost(50)
                    .threadsAllowedToBlockForConnectionMultiplier(10)
                    .build();

List<ServerAddress> seeds = new ArrayList<ServerAddress>();
seeds.add(new ServerAddress("mongo1.production:27017"));
seeds.add(new ServerAddress("mongo2.production:27017"));
MongoClient client = new MongoClient(seeds, null, options);

1 个答案:

答案 0 :(得分:0)

如果您尝试通过键入...

从终端运行mongo
mongod

...您(可能)会收到以下错误:

*********************************************************************
 ERROR: dbpath (/data/db) does not exist.
 Create this directory or give existing directory in --dbpath.
 See http://dochub.mongodb.org/core/startingandstoppingmongo
*********************************************************************

您所要做的就是创建mongo正在寻找的目录/路径(/ data / db),如下所示:

sudo mkdir -p /data/db/

然后:

sudo chown `id -u` /data/db

或者如错误消息中所述,您可以在--dbpath中给出现有目录,如下所示:

mongod --dbpath /srv/mongodb/

有关详细信息,请查看MongoDB manual