Node.js の CPU が固定されて困っています。node.js サーバーから HTTP 要求を行うときに ETIMEDOUT エラーが発生した場合と正確に相関していることに気付きました。
この問題は、まさに問題である可能性があります。引用するには:
この問題は node.js ネイティブ コードの問題ではなく、mongodb ドライバーがその接続プールを管理する方法の問題です。システムから何らかの応答が得られるまで、1 つの接続待機メソッドを無限にキューにプッシュします。そして、接続がハングアップすると、この待機メソッドはそれ自体を永遠に繰り返し始めます。
ただし、この問題は約 1 年前に 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);
});