httpclient 接続プールの管理

マイクロサービスが残っているため、サービス間の http 呼び出しがますます増えています。javaでは、オープンソースのツールクラスであるhttpclientを使って処理を行うことができますが、使い方を誤ると、特にコネクションプールが正常に使えるかどうか、可能性は比較的低くなります.次に、httpclientのコネクションプールの原理を分析します.詳細に。

(1) httpclientを利用するメリット

  a) 待ち時間の短縮: 接続プールが使用されていない場合、接続が http 要求を開始するたびに tcp リンクが再確立され (3 回のハンドシェイク)、接続が使い果たされると接続が閉じられます (4 回のハンドシェイク)。接続プールを使用すると、これが軽減されます。部分的なタイム ロス。

 b) より大きな同時実行のサポート: 接続プールが使用されていない場合、接続ごとにポートが開かれます. 大規模な同時実行の場合、システムのポート リソースがすぐに使い果たされ、新しい接続を確立できなくなります。 . 接続プールを使用して長い接続を管理すると、以前の接続を再利用できます。httpclient を使用すると、2 つのクラスター間の呼び出し、つまり制限されたマシン間の呼び出しになる場合があります。このように、接続プールを多重化すると、リソースを効果的に節約できます。

(2) 長いリンクと短いリンク

httpclient 接続プールは、長い接続に基づくすべてのマネージド ソケット接続であるためです。そこでロングリンクとショートリンクの違いを紹介。まず最初に、http keep-alived と tcp keep-alive の違いを受け入れる必要があります. それらは同じものではなく、意図が異なります. http keep-alived は tcp をより長く存続させることで、同じリンクで複数の http を送信できるようにし、ソケットの効率を向上させることができます。tcp の keep-alived は、tcp の接続状態を検出するためのフレッシュ キープ メカニズムです。tcp keep-alived freshness timer は、次の 3 つのシステム カーネル構成パラメーターをサポートします。

tcp_keepalived_time

tcp_keepalived_intvl

tcp_keepalived_probes

keepalived は tcp のフレッシュネス タイマーです. ネットワークの両端で tcp 接続が確立され、IDLE が tcp_keepalived_time の間アイドル状態になると、サーバー カーネルはクライアントに検出パケットを送信して、tcp 接続ステータスを判断しようとします。相手からの応答がない場合は、相手から ack を受信するまで tcp_keepalived_intvl の後に再度検出パケットの送信を試み、相手からの ack がない場合は、合計で tcp_keepalived_probes 回、それぞれ試行します。ここで 15 秒です。tcp_keepalived_probes 回試行しても応答がない場合、tcp 接続は破棄されます。

 

 

おすすめ

転載: blog.csdn.net/yzh_2017/article/details/78575250