一段时间后,NodeJS服务器停止侦听端口

时间:2017-03-08 05:25:01

标签: node.js cron pm2 event-loop

我的NodeJS服务器在一段随机的时间间隔(天)后停止侦听请求。我的节点服务器在3个负载均衡器上运行,每个负载均衡器有4个节点。 PM2日志显示内部cron仍然在运行,我认为任何请求都没有打开,但没有响应。

这些是从内部点击时来自生产服务器的日志:

[root@app_inst_1 ~]# curl localhost:3000
curl: (7) couldn't connect to host

PM2记录:

0|server   | No records found to reconcile
0|server   | undefined

pm2重启后:

[root@app_inst_1 ~]# curl localhost:3000
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Redirect URL</title>
<script type="text/javascript">
    function postResponse(data) {
        document.write(data);
          CitrusResponse.loadWalletResponse(data);
    }
        var url = window.location.href;
        var index = url.indexOf("#");
        if(index != -1){
            var queryString = url.substring(index + 1);     
            postResponse("#"+queryString);
        }           
</script>
</head>
<body>
</body>

1 个答案:

答案 0 :(得分:2)

实际上是由于javascript中的TypeError。虽然您的应用程序运行的日志太多,但您可能永远不会深入挖掘日志文件以查找TypeError。在TypeError期间,节点服务器不会崩溃但是在端口上发出的请求将不会被提供,除非使用一些异常处理程序或其他机制进行处理,这将导致过多的请求被排队等待最终导致nodejs服务器端口停止侦听任何新请求。因此,请更好地查看日志文件并搜索任何TypeError。