Azure cosmosdb MongoError:Azure CosmosDB上的连接超时
我的应用程序运行在NodeJS 4.4.7上,并使用MongoDB驱动程序2.2.31(不是Mongoose)连接到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
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设置这些参数有助于修复错误吗?