MongoError:Azure CosmosDB上的连接超时

时间:2017-08-17 18:02:17

标签: azure-cosmosdb

我的应用程序在NodeJS 4.4.7上运行,并使用MongoDB驱动程序2.2.31(而不是Mongoose)连接到Azure CosmosDB。这是我连接到DB的方式:

var connectionString = 'mongodb://USERNAME:PASSWORD@yyy.documents.azure.com:10255/DB_NAME?ssl=true'
var options = {
    db: { j: false },
    server: { autoReconnect: true, socketOptions: { connectTimeoutMS: 300000 } },
};
require('mongodb').MongoClient.connect(connectionString, options, callback);

我最近开始遇到以下错误:

MongoError: connection X to http://yyy.documents.azure.com:10255 timed out

其中X是一个小整数(我见过8,10,29等)。


一些背景信息:

  • 当我没有设置地理位置复制时,没有错误(30天以上)。
  • 最近从Azure门户(美国西部作为写入区域,美国东部作为读取区域)设置地理复制。
  • 开始体验“没有主服务器可用”错误。
  • 将我的mongodb驱动程序从2.0.49更新到2.2.31,错误消失,但立即开始遇到“池损坏”错误。
  • 关注this workaround解决了问题(即删除&replicaSet=globaldb
  • 在零问题发生3天后,我开始遇到上述“连接超时”错误。首次报告错误发生在美国东部时间8月16日晚8点24分,报告的最后一次错误发生在美国东部时间8月17日上午6点40分左右。


我不确定它是否是Azure的临时问题,或者我连接到CosmosDB的方式有问题。任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

此问题可能与未正确设置客户端连接参数有关。您能否尝试设置这些并查看它是否解决了超时问题?

MongoClientOptions.Builder optionsBuilder = new MongoClientOptions.Builder();
optionsBuilder.socketTimeout(10000);
optionsBuilder.maxConnectionIdleTime(60000);
optionsBuilder.heartbeatConnectTimeout(5000);
MongoClientURI mongoClientURI = new MongoClientURI(props.getMongoDbConnection(), optionsBuilder);