【发布时间】:2013-07-26 04:24:22
【问题描述】:
我在端口 1338 上设置了一个 HTTP 服务器来监听服务器的 IP。这在我第一次启动 Node 时工作得很好,但由于某种原因,我遇到了服务器随机停止监听的问题。我检查了 Forever 从我的应用程序收集的日志,包括任何未捕获的异常。自启动以来出现任何错误的日志中都没有显示任何内容。
我的问题有两个。什么会导致服务器以随机间隔停止侦听?另外应该在 Node 中运行什么检查,以便我可以注销导致侦听器停止的错误?
下面是我的 HTTP 服务器的代码。
http.createServer(function (req, res) {
var pathname = url.parse(req.url).pathname;
var query = url.parse(req.url, true).query;
var check;
var responseData = '';
if(pathname === '/healthcheck/ticket'){
check = new Date().getTime();
check = check - tickets.lastAction;
if(check < 30000){
responseData = "page ok";
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(responseData);
}
else{
check = check/1000;
responseData = 'Last action taken by the Ticket Generator was ' + check + ' seconds ago';
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(responseData);
}
}
else{
responseData = 'URL NOT FOUND!';
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end(responseData);
}
}).listen(config.eng.port, config.eng.host);
【问题讨论】:
-
我很确定服务器不会随机停止监听,但你必须弄清楚是什么原因导致它停止。我尝试了您上面显示的代码,但它似乎永远不会停止收听(代码中没有任何内容表明它会停止收听)。您是否尝试过 console.log 一切并试图弄清楚在停止侦听之前运行的最后一条指令是什么?另外(这可能是一个愚蠢的建议,但我不知道永远是如何工作的)你确定永远不会在重新启动时覆盖日志(以防它是由抛出的错误引起的)?
-
我已经检查过了,它只是在附加日志。当然,它今天还没有发生(有时需要几天时间),但我将使用更多控制台日志记录重新启动它,以显示每个步骤并查看它在哪里死亡。
标签: node.js