我的 Node.js CPU 被固定时遇到问题。我注意到它与从 node.js 服务器发出 HTTP 请求时出现 ETIMEDOUT 错误的时间完全相关。
我发现这个问题可能正是这个问题。去引用:
这个问题不是 node.js 本机代码的问题,而是 mongodb 驱动程序如何管理它的问题;连接池。它将一种连接等待方法无限推送到队列中,直到得到系统的一些响应。而当连接刚刚挂起时,这种等待方法就会开始自我重复。
然而,据说这个问题大约在一年前在 Mongo 驱动程序中得到了解决。
这是错误,它出现在我的日志中:
Sat Nov 17 2012 08:48:11 GMT-0800 (PST): Error: ETIMEDOUT
Sat Nov 17 2012 08:48:11 GMT-0800 (PST): "Error: ETIMEDOUT\n at Object.<anonymous> (/home/webapps/SGPArray/releases/20121117084123/api/node_modules/request/main.js:670:15)\n at Timer.list.ontimeout (timers.js:101:19)"
当套接字超时时,node.js CPU 是 100% 固定的。派发错误后,CPU使用率恢复正常。
想法?
代码非常简单,甚至似乎不值得发布
request({'uri': url}, function(err, resp) {
if(err)
{
callback(err);
return;
}
parseArticles(resp);
});