2017-09-26 3 views
0

多くの発信HTTPリクエストを作成するAzure関数を作成しようとしています。定期的にそれは限界に達すると思われ、すべての要求は数分間タイムアウトします。それから、もう一度作業が始まり、要求が通過します。Azure関数 - ノードアプリケーションのポート枯渇

関数を実行しているマシンでポートが枯渇している可能性がありますが、これをデバッグする方法や、ノードアプリケーションで回避する方法がわかりません。requestライブラリを使用しています。これは、ノードがこれを防ぐために接続をプールすると思われるようにも聞こえます。私は機能上、netstatを使用することができないので、ポートの疲労が問題であるかどうかはまったくわかりません。私のラップトップには問題はありません。ここで

は、要求の多くを発射するシンプルAzureの関数の1つずつと、この問題を示しています

const cp = require('child_process'); 
const request = require('request'); 

module.exports = function (context, myTimer) { 
    context.log('Starting'); 

    function doCall(cb) { 
     const url = 'https://jsonplaceholder.typicode.com/posts'; 
     request(url, (err) => { 
      if (err) { 
       context.log("error: " + err.toString()); 
      } 

      cb(); 
     }); 
    } 

    let i = 500; 
    doCall(function iterate() { 
     if (i-- > 0) { 
      context.log('iterate ' + i); 
      doCall(iterate); 
     } else { 
      context.log('done'); 
      context.done(); 
     } 
    }); 
}; 

私はそれが正常に実行見る、数分のための時間外は、再び正常に実行します..

+0

たぶん、プールサイドには役立つだろう削減:今すぐ上から

私の例では、このようになります。 Nodeに精通しているわけではありませんが、https://stackoverflow.com/questions/19043355/how-to-use-request-js-node-js-module-poolsの何かが役に立ちます。 –

答えて

0

@ david-ebbo、あなたの提案は非常に役に立ちました。投稿したリンクから、httpエージェントを使用してソケットのプールを制限することができます。実行には時間がかかりますが、今は要求がタイムアウトしません。

const cp = require('child_process'); 
const request = require('request'); 
const http = require('http'); 

module.exports = function (context, myTimer) { 
    context.log('Starting with agent'); 
    const pool = new http.Agent(); 
    pool.maxSockets = 4; 

    function doCall(cb) { 
     const url = 'https://jsonplaceholder.typicode.com/posts'; 
     request({ url, pool }, (err) => { 
      if (err) { 
       context.log("error: " + err.toString()); 
      } 

      cb(); 
     }); 
    } 

    let i = 500; 
    doCall(function iterate() { 
     if (i-- > 0) { 
      context.log('iterate ' + i); 
      doCall(iterate); 
     } else { 
      context.log('done'); 
      context.done(); 
     } 
    }); 
}; 
関連する問題