web-dev-qa-db-ja.com

haproxyでhttpcloseまたはhttp-server-closeを使用する場合

ネットワークの遅延のためにパフォーマンスの問題があるシステムを継承しました。 CentOS 5.xおよびhaproxy 1.5xを使用しています

その理由は、「初期接続」に費やされた時間が原因で、各APIリクエストに多くの時間が費やされるためです。

Example

これは単なるWebの例であるため、残りのタイミングは無視してください。残りのタイミングは、すべてのAPI呼び出しが「初期接続」で約150〜250ミリ秒の「初期接続」を除いて、私の側からは問題ありません.

Haproxyから設定「option httpclose」を削除した後、「初期接続」からのすべての待機時間がなくなったため、パフォーマンスが大幅に向上しました。

いくつかの記事を読んだ後、私はこれを見つけました http://killtheradio.net/technology/haproxys-keep-alive-functionality-and-how-it-can-speed-up-your-site/

削除することが提案されている場所:

option httpclose 

で置き換える

timeout client  5000
option http-server-close

だから私の質問は:

  • オプションhttpcloseを使用する場合
  • Haproxyを使用するサーバーは、すべてのRestful API呼び出しを担当します。config "option httpclose"を削除した後、他に考慮する必要がある考慮事項はありますか?
  • 「オプションhttp-server-close」を使用する必要があり、影響は何ですか?
17
forestclown

実際に使用する必要があります

option http-keep-alive

フロントエンドの制限は、アクティブなセッションの数の増加に対応できるように十分に高くする必要があります(メモリ要件に注意してください)。これは、各リクエスト後に接続が閉じられないために増加します。

次は、バックエンドがHAproxyに対してキープアライブをサポートすることを確認することです。そうしないと、上記は役に立たず、http-server-closeモードに切り替えることができます。

リクエストの割合と並列クライアントの数に応じて、timeout http-keep-alive十分な接続再利用率を維持しながら、フロントエンドに十分な接続スロットがあることを確認します。始めるのに適した値は数秒です。

httpcloseオプションは、サーバーとクライアントの両方への接続を閉じたい場合にのみ使用する必要があります。クライアントが壊れていない限り、これはほとんどありません。多数のアイドルリクエストにうまく対応できないサーバーがある場合は、http-server-closeオプション、ただしそれに対する最新のすべてのWebサーバー。

これは、接続フェーズの重要な部分を表しているため(すべての要求でSSLハンドシェイクが必要ない場合)、SSL部分にも役立ちますが、SSLセッションキャッシュのパフォーマンスを調べたい場合や、複数のHAproxyサーバーがアクティブ、RFC5077サポート(v1.6以降が必要)。

https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#tune.ssl.cachesizehttps://cbonte.github.io/haproxy-dconv/ configuration-1.5.html#3.2-tune.ssl.lifetime

7
anine.io