2016-08-09 16 views
1

REST呼び出し中にタイムアウトを設定するには、これらの両方のパラメータを指定する必要がありますが、なぜそれらがどのように異なる目的を果たすのかがわかりません。また、それらのうちの1つだけ、あるいはその両方を異なる値で設定するとどうなりますか?RESTful:JerseyのClientProperties.CONNECT_TIMEOUTとClientProperties.READ_TIMEOUTの違いは何ですか?

答えて

1

CONNECT_TIMEOUTは、ホストへの接続を確立するまでに待機する時間です。接続されると、READ_TIMEOUTは、サーバーが提供要求内のすべてのコンテンツで応答するのに許容される時間です。

どのように設定するかは、要件に応じて異なりますが、異なる値にすることもできます。 CONNECT_TIMEOUTは、サーバーとのソケット接続をセットアップするために必要な時間だけなので、大きな値を必要としません。 30秒は十分な時間でなければなりません.10秒以内に完了しなければ、それは長すぎます。サーバーがホース状態にあるか、少なくとも過負荷状態になっている可能性があります。

READ_TIMEOUT - これは、特にリクエストされたアクション/リソースが処理に時間がかかることがわかっている場合は、もっと長くなる可能性があります。これを60秒、または数分に設定することもできます。このことは、プロセスが完了したことを確認するのがどれほど重要であるかにかかっており、システムがどれだけ早く応答する必要があるかを判断することになります。プロセスが完了するのを待っている間にクライアントがタイムアウトしても、必ずしもプロセスが停止しているとは限りません。サーバーで終了するまで(または少なくともサーバーのタイムアウトに達するまで)実行されます。

これらの呼び出しがインターフェイスを直接駆動している場合、ユーザーはこのような遅延に対して忍耐を持たない可能性があります。バックグラウンドプロセスまたはバッチプロセスで呼び出された場合、より長い時間が受け入れられる可能性があります。これはあなた次第です。

+0

ありがとうございます! あなたは質問のこの部分にもいくつかの光を当てることができますか "また、それらのうちの1つだけを設定するか、または両方を異なる値に設定すればどうなりますか?" –

+0

回答を更新します – slambeth

関連する問題