2

restify を使用して node.js サーバーを実装します。基本的に、サーバーは HTTP POST リクエストごとに時間のかかるプロセスを実行しますが、どういうわけかソケットが閉じられ、クライアントは次のようなエラー メッセージを受け取ります。

[Error: socket hang up] code: 'ECONNRESET'

エラーの種類によると、ソケットはサーバー側で確実に閉じられています。

createServerこの問題を解決するために restifyのメソッドに設定できるオプションはありますか?

編集: 長時間実行されるプロセスは、Mongoose を使用して MongoDB プロセスを実行しています。MongoDB への接続が原因でソケット ハングアップが発生している可能性もありますか? Mongoose のタイムアウトを増やすには? ハングアップがちょうど 120 秒で発生したことがわかったので、デフォルトのタイムアウト設定が原因である可能性がありますか?

前もって感謝します!

4

2 に答える 2

9

オブジェクトで標準ソケットを使用し、setTimeoutを手動で呼び出して、ノードがソケットをハングアップするまでの時間を増やすことができます。デフォルトでは、ノードはすべてのソケットに 2 分間の非アクティブ タイマーを持っています。それを増やす例として、次のように、長時間実行されるタスクの前に実行するようにハンドラーを設定します。req

server.use(function (req, res, next) {
    // This will set the idle timer to 10 minutes
    req.connection.setTimeout(600 * 1000);
    res.connection.setTimeout(600 * 1000); //**Edited**
    next();
});
于 2013-03-09T22:07:59.990 に答える
0

この継ぎ目は実際には実装されません

https://github.com/mcavage/node-restify/issues/288

于 2013-03-09T06:12:13.870 に答える