【问题标题】:NodeJS server stops listening on port after sometime一段时间后,NodeJS 服务器停止侦听端口
【发布时间】:2017-07-28 13:32:27
【问题描述】:

我的 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>

【问题讨论】:

  • 面临完全相同的问题...如果您已经解决了请帮忙!!
  • @ErGagandeepSethi 检查答案
  • 感谢您的回答

标签: node.js cron pm2 event-loop


【解决方案1】:

这实际上是由于 javascript 中的 TypeError 造成的。当您的应用程序使用太多日志运行时,您可能永远不会深入挖掘日志文件以查找 TypeError。在 TypeError 期间,节点服务器不会崩溃,但除非使用某种异常处理程序或其他机制进行处理,否则不会处理在端口上发出的请求,这将导致过多的请求排队等待最终导致 nodejs 服务器端口停止监听任何新请求。所以最好查看你的日志文件并搜索任何类型错误。

【讨论】:

  • 查看日志文件并搜索任何类型错误的日志文件的位置是什么?
  • 如果您使用的是 pm2,您可以使用pm2 logs 进行检查。它会像 ~/.pm2/logs/capp-error-0.log
  • @Ric 我遇到了类似的错误,并且使用节点 js v8.7.0 但在我的情况下,日志没有类型错误,有什么建议可以解决这个问题吗?
猜你喜欢
  • 2019-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-01
  • 1970-01-01
  • 2017-11-05
  • 2019-01-03
  • 1970-01-01
相关资源
最近更新 更多