Azure cosmosdb MongoError:Azure CosmosDB上的连接超时

Azure cosmosdb MongoError:Azure CosmosDB上的连接超时,azure-cosmosdb,Azure Cosmosdb,我的应用程序运行在NodeJS 4.4.7上,并使用MongoDB驱动程序2.2.31(不是Mongoose)连接到Azure CosmosDB。以下是我连接数据库的方式: var connectionString = 'mongodb://USERNAME:PASSWORD@yyy.documents.azure.com:10255/DB_NAME?ssl=true' var options = { db: { j: false }, server: { autoReconne

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

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,错误消失,但立即开始遇到“池已销毁”错误
  • 以下步骤解决了问题(即删除
    &replicaSet=globaldb
  • 在3天的零问题之后,我开始遇到上面的“连接超时”错误。第一次报告的错误发生在美国东部时间8月16日晚上8:24左右,最后一次报告的错误发生在美国东部时间8月17日上午6:40左右


我不确定这是来自Azure的临时问题还是我连接CosmosDB的方式有问题。任何建议都将不胜感激

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

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

谢谢@alekseys,我想尝试一下你的建议,但是我很难在MongoDB NodeJS驱动程序中找到等价的变量。您能帮我找到
maxConnectionIdleTime
heartbeatConnectTimeout
等价物吗?NodeJS驱动程序中没有严格的等价物。您可能想查看keepAlive选项,也可能是Thanke上列出的其他选项的组合。我正在使用
keepAlive
socketTimeoutMS
connectTimeoutMS
并将监视周末是否发生相同的错误。@BH.Q设置这些参数有助于修复错误吗?