我继承了一个node.js / Express应用程序,有点混乱。它定期且相当随机地卡住,直到重新启动后才响应任何请求。
我怀疑应用程序中的某些内容正在阻塞,或者陷入了循环或在没有使用适当的异步技术的情况下向外部api发出请求,并且从没有得到响应并且从不超时,服务器只是停止响应,但是没有崩溃。
我显然想找到罪魁祸首代码并解决问题,但是与此同时,我想找到一种在服务器停止响应时自动重新启动服务器的方法。
为了在本地测试解决方案(因为我目前不知道实际的罪魁祸首),我创建了以下Express路由,该路由模拟了我得到的确切行为。
app.get('/block-block-block', function (req, res){
for(;;) {}
};
Run Code Online (Sandbox Code Playgroud)
我的问题是使上述路由被击中(这将立即使服务器停止对任何事情的响应),是否有办法在内部检测节点中的阻塞并重新启动或关闭?如果不是,那么什么时候检查服务器没有响应并重新启动服务器的好解决方案是什么?
我所做的大多数搜索都将我带到诸如everever和 PM2之类的工具。如果您的应用程序崩溃,这些功能会很好用,但是当应用程序受到radomley阻止时,我真的看不到任何重启功能。