0

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);
});
4

0 に答える 0