NodeJS和MongoDB失去连接

4

我有7个使用Mongoose的NodeJS网站,在Amazon AWS上的小实例中运行,MongoDB则在另一个小实例中。

在低使用率下(CPU、内存和网络流量),一切运行正常,没有高峰。

但是有时似乎这些NodeJS服务会失去与MongoDB的连接。所有不使用Mongoose的服务方法仍然正常工作。使用Mongoose的服务方法调用无限循环而无响应。我需要重启服务才能使它们重新响应。

它发生的时间是随机的,我无法找出任何规律。

另一个奇怪的事情是,所有服务平均停止一起。这种情况很少只会发生在其中一个服务上,但也会发生。

我可以尝试将所有服务分别放到单独的服务器中,但这将非常昂贵。但首先我想找出发生了什么并解决它。

有人能帮帮我吗?


这听起来非常像你的代码存在一个错误,在某些条件下,它不会向浏览器发送响应。这正好符合你所描述的情况:“没有任何响应的无限调用”。@yttrium关于Mongoose自动重新连接的说法是正确的,因此这可能与Mongoose无关。 - robertklep
这是我正在思考的事情之一。问题是,Node没有抛出任何类型的错误消息,这使得任何分析都更加困难。 - mauro0x52
当您不发送响应时,并不会出现错误情况,您的浏览器只会等待并(最终)超时。也许您可以发布其中出现问题的路线之一? - robertklep
+1 如果您知道如何解决,请写下解决方法。 - Simcha
1个回答

0

尝试将'?auto_reconnect=true'选项添加到连接字符串中,可能会解决您的问题。

但是,根据文档,Mongoose默认启用auto_reconnect。

如果您发布节点.js和mongodb服务器的日志,可能会更容易理解发生了什么。


感谢您的回答,yttrium!问题在于连接仍然存在,只是没有关闭,并且没有错误日志或消息。它只是停止响应... - mauro0x52
尝试升级到最新版本,因为驱动程序中已经修复了许多错误。 - christkv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接