我是 Node.js 的新手,目前正在质疑它的可靠性。
根据我到目前为止所看到的,似乎存在一个重大缺陷:任何未捕获的错误/异常都会导致服务器崩溃。当然,您可以尝试对代码进行防弹保护或将 try/catch 放在关键区域,但几乎总会有错误被漏掉。如果一个有问题的请求可能影响所有其他请求,这似乎很危险。我发现有两种解决方法:
使用守护进程或模块,例如forever https://github.com/indexzero/forever当服务器崩溃时自动重新启动。我不喜欢的一点是服务器仍然关闭一两秒(对于大型站点,这可能是数百(数千?)的请求)。
使用以下命令捕获未捕获的异常process.on('uncaughtException')
。这种方法的问题(据我所知)是无法获取导致异常的请求的引用。因此,该特定请求会被挂起(用户会看到加载指示器,直到超时)。但至少在这种情况下,其他无问题的请求仍然可以得到处理。
有 Node.js 资深人士可以参与吗?
对于自动重启和负载平衡,我建议您查看学习助推器上线了 https://github.com/learnboost/up平衡器。
它允许您在负载均衡器后面重新加载工作线程,而不会丢弃任何请求。它停止将新请求定向到工作人员,但对于已经得到服务的现有请求,它提供workerTimeout
在真正关闭进程之前等待请求完成的宽限期。
您可以调整此策略,使其也由uncaughtException
event.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)