【发布时间】:2012-03-22 10:27:24
【问题描述】:
我是 Node.js 的新手,目前正在质疑它的可靠性。
根据我目前看到的情况,似乎存在一个重大缺陷:任何未捕获的错误/异常都会导致服务器崩溃。当然,您可以尝试对您的代码进行防弹或将 try/catch 放在关键区域,但几乎总是会有漏洞从裂缝中溜走。如果一个有问题的请求会影响所有其他请求,这似乎很危险。我发现了两种解决方法:
使用守护进程或模块,如forever,在服务器崩溃时自动重启服务器。我对此不满意的是服务器仍然关闭了一两秒(对于大型网站,这可能是数百(数千?)的请求)。
使用
process.on('uncaughtException')捕获未捕获的异常。这种方法的问题(据我所知)是无法获取对导致异常的请求的引用。因此,该特定请求被挂起(用户看到加载指示器直到超时)。但至少在这种情况下,其他没有问题的请求仍然可以处理。
任何 Node.js 资深人士都可以参与吗?
【问题讨论】:
-
我不相信大型网站上有“数十万”个丢失的请求。大型网站将横向扩展,因此单个进程只会影响总流量的一小部分。
-
可能重复:stackoverflow.com/questions/7310521/… stackoverflow.com/questions/9181027/… 虽然我似乎理解接受的答案不令人满意?
-
@Kevin 可能仍然有数百个,或者无论如何根本无法接受
-
正如 JP 所说,Nodejs 具有集群支持 nodejs.org/api/cluster.html 也有可以由主进程重新启动的子进程。
-
我也很担心这个问题——这就是为什么我在一个新项目中犹豫使用 Node.js 作为 REST api 的原因。
标签: javascript node.js