节点MongoDB的原生MongoClient意外关闭连接(node-mongodb-native

2019-08-05 14:23发布

我一直在寻找很多关于MongoDB中意外关闭的连接,但只能找到谁希望自己的连接,收人的问题。

我使用节点MongoDB的本地连接到数据库,但我不断收到看似随意的“错误:连接关闭”的消息。 如果我手动重试请求(浏览器刷新)请求工作。

任何想法是什么原因造成的? 有一些简单的选项,这将有助于?

我得到使用我的分贝手柄:

     MongoClient.connect(connection_string, { auto_reconnect: true }, function (err, db) {
     //server code/routes in here
     }

我一直在寻找通过https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/connection/server.js ,但我知道我是如何连接池的了解有限在一般管理是我绊倒起来。 我的印象是,他们将保持打开我的服务器的生命周期下。 有人能帮忙吗?

编辑:看完mjhm的评论,我开始更深入地寻找到TCP保持活跃。 遇到一些网站,暗示这可能是Azure的跌跌撞撞做(这个问题是现在误判!)。 显然,天青负载平衡器杀死活性的1分钟后的连接。 我使用Azure的网站,因此它可能会或可能不适用,但我认为这是有识之士看好足以启动调查的一个新行。 更多详细的http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/12/windows-azure-load-balancer-timeout-details.aspx

Answer 1:

来源: http://christiankvalheim.com/post/32209721702/tcp-keepalive

TCP存活,使用MongoDB的Node.js的驱动程序时相当频繁出现的问题的一件事是停止响应的插座。 这通常有两个来源。

有一个防火墙在应用程序和MongoDB实例之间,并没有观察到的keepAlive。

套接字超时是高您的系统离开插座挂永不关闭。 第一种情况可以通过设置插座连接选项以及启用Keepalive与设置在插座上的硬超时值来解决。 这将确保一个正确配置的防火墙将保持连接活着,如果没有它就会超时。 另外要调整的是OS tcp_keepalive_time。 基本上它是一个高的东西,像MongoDB中(缺省为2小时的Linux)。 设置此下将正确超时死插座,让司机恢复。

一个很好的链接阅读更多关于它。 http://www.mongodb.org/display/DOCS/Troubleshooting#Troubleshooting-Socketerrorsinshardedclustersandreplicasets



文章来源: node-mongodb-native MongoClient unexpectedly closing connections