NodeJS 服务器在一段时间后停止监听端口
NodeJS server stops listening on port after sometime
我的 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>
实际上是由于 javascript 中的 TypeError。虽然您的应用程序 运行 日志太多,但您可能永远不会深入挖掘日志文件来查找 TypeError。在 TypeError 期间,节点服务器不会崩溃,但除非使用某些异常处理程序或其他机制处理,否则将不会处理在端口上发出的请求,这将导致太多请求排队等待服务,最终导致 nodejs 服务器端口停止监听任何新请求。所以最好查看您的日志文件并搜索任何 TypeError。
我的 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>
实际上是由于 javascript 中的 TypeError。虽然您的应用程序 运行 日志太多,但您可能永远不会深入挖掘日志文件来查找 TypeError。在 TypeError 期间,节点服务器不会崩溃,但除非使用某些异常处理程序或其他机制处理,否则将不会处理在端口上发出的请求,这将导致太多请求排队等待服务,最终导致 nodejs 服务器端口停止监听任何新请求。所以最好查看您的日志文件并搜索任何 TypeError。