2015-10-07 11 views
23

現在、ノード0.10からノード4.1.2に更新中です。奇妙なパターンが見られます。私たちのpostgresデータベースへの接続数は1と倍増しており、外部サービスへのリクエストでも同じパターンが表示されています2。ネイティブクラスターAPIを実行するクラスター化されたアプリケーションを実行しており、両方のバージョンで同じ数のワーカーが存在します。ノード4.1.2上のリクエストと接続

ランタイム言語をアップグレードすると、外部サービスへの要求が倍増するため、アプリケーションの動作が変わってしまうのはなぜか分かりません。

Postgres connections 私は0.12と4.xに気づいた興味深いのExternal requests

+0

postgresにアクセスするために使用しているノードパッケージはどれですか? –

+0

'pg' v4.4.1。私も[repo](https://github.com/brianc/node-postgres/issues/871)の問題を開いたが、そこから問題が発生しているとは思わない。 – Chris911

+0

ノード4.xのサポートに関するいくつかの問題については、4.4.2をリリースしました。まだ試しましたか?問題はそこから来ていないと思いますか?私は最初にpgパッケージを疑うだろう。 –

答えて

1

一つは、ガベージコレクションの変化です。私はpgモジュールを使用していませんでしたので、メモリやガベージコレクションの影響を受けるかどうかを内部的に把握していません。ノードのデフォルトメモリ設定を定義していない場合は、そのショットを与えて、他の結果が表示されるかどうか試してみてください。

node --max_old_space_size <some sane value in MB>

+0

さらに調査したところ、問題はポストグルと接続プールから来ているとは思わない。気になるのは、実際にはアプリケーションロジックにあり、外部のlibを使用しない発信HTTPリクエストの数です。 – Chris911

1

私は似たように走ったが、私は二重のファイルへの書き込みを得ていました。あなたの正確なケースはわかりませんが、要求がほぼ正確に倍増するシナリオを見てきました。 4.1.2へのアップデートで

process.sendchild.sendは非同期に同期から行ってきました。

私はこのような問題が見つかりました:以前にブロッキングが送信し、このコードが動作するように許可されているように、

var child = fork('./request.js'); 
var test = {}; 

child.send(small request); 
child.send(large request); 
child.on('response', function (val) { 
    console.log('small request came back: ' + val); 
    test = val; 
}); 

if(!test){ 
    //retry request 
} ... 

ので、非ブロッキングバージョンは、エラーが発生し、再試行している前提としています。実際にエラーは発生していないので、リクエストが2回入力されます。

+0

興味深い。我々はクラスタリングを行い、アプリケーション全体をフォークするために[throng](https://github.com/hunterloftis/throng/blob/master/lib/throng.js)を使用しています。そこには再試行ロジックはありません。 – Chris911

関連する問題