ネットワークの遅延のためにパフォーマンスの問題があるシステムを継承しました。 CentOS 5.xおよびhaproxy 1.5xを使用しています
その理由は、「初期接続」に費やされた時間が原因で、各APIリクエストに多くの時間が費やされるためです。
これは単なる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
だから私の質問は:
実際に使用する必要があります
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