Express / node服务器随机崩溃,events.js ECONNRESET

时间:2016-11-21 15:25:30

标签: node.js mongodb express

我正在使用Node.js,Express和Mongoose构建应用程序。我在开发环境中使用Cloud9。我使用快速生成器来创建我的应用程序的基础并添加到它上面。

我似乎随机收到此错误,服务器停止。它不会在任何特定事件中发生,它发生在页面加载之间。它似乎不会发生在任何特定页面上。

我一直都会遇到这个错误,而且我不得不再次启动它。

events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: read ECONNRESET
    at exports._errnoException (util.js:870:11)
    at TCP.onread (net.js:552:26)

当我收到此错误时,MongoDB不会崩溃。我只需要再次启动节点服务器,它工作正常。直到它再次随机崩溃。

我不确定这个错误是否只是C9的副作用,如果是这样我并不担心,我只是不希望它在生产中发生,特别是我几乎不能轻易看到日志。

如果我真的未能及时处理错误"我想知道我应该这样做的地方,我更希望我的服务器在出现问题时不会崩溃。

2 个答案:

答案 0 :(得分:2)

在节点中,whenever an 'error' event is emitted and no one listens to it, it will throw
为了使它不被抛出,请在其上放置一个监听器并自己处理它。这样,您可以使用更多信息记录错误。

您还可以尝试使用有用的node.js选项--abort-on-uncaught-exception。它不仅提供了更加冗长和有用的错误堆栈跟踪,而且还在应用程序崩溃时保存了核心文件,允许进一步调试。

要为一组调用创建一个侦听器,您可以使用domains并在运行时捕获其他错误。确保与http(服务器/客户端)相关的每个异步操作与代码的其他部分相比处于不同的域上下文中,域将自动侦听错误事件并将其传播到它自己的处理程序。所以你只听那个处理程序并获取错误数据。您还可以免费获得更多信息here

另见SO answer ...

答案 1 :(得分:1)

您可以使用pm2启动服务器。如果有任何错误,您的服务器将不会崩溃。它只会抛出错误并继续运行。它还有其他有用的功能。

您可以在此处详细了解pm2 https://www.npmjs.com/package/pm2

相关问题