2016-01-17 17 views
11

私はネットワークレイテンシのためにパフォーマンス上の問題があるシステムを継承しています。私たちは、その理由がhaproxyでhttpcloseまたはhttp-server-closeを使用する場合

Example

は無視する「初期接続」に費やされた時間のために、各APIリクエストに費やされる時間がたくさんあるということであるのCentOS 5.xのを使用して、そしてhaproxy 1.5倍

されています残りのタイミングはウェブから取った一例に過ぎず、タイミングの残りの部分は、「初期接続」の場合を除いて、すべてのAPI呼び出しが150〜250msの間にタイムアウトしている「初期接続」以外は問題ありません。

haproxyから「httpclose」オプションを削除すると、「初期接続」からのすべての待機時間がなくなり、パフォーマンスが大幅に向上しました。

option httpclose 

をして

timeout client 5000 
option http-server-close 

と交換してくださいだから私の質問は次のとおりです:

いくつかの記事を通過した後、私はそれを削除することをお勧めこの1 http://killtheradio.net/technology/haproxys-keep-alive-functionality-and-how-it-can-speed-up-your-site/

を発見しました

  • オプションhttpcloseをいつ使用するのですか?
  • haproxyを使用しているサーバーは、私たちの安心したAPIコールをすべて処理します。設定 "オプションhttpclose"を削除した後に気をつける必要がある他の考慮事項がありますか?
  • "option http-server-close"を使用する必要がありますが、どのような影響がありますか?あなたが実際にあなたがフロントエンドの制限がされ、彼らはアクティブなセッションの数の増加に対応できること(メモリ要件に注意してください)十分に高いことを確認する必要があり

    option http-keep-alive 
    

    を使用する必要があります

答えて

3

各要求の後に接続がもはや閉じられないという事実のために、より高くなる。

次のことは、バックエンドがHAproxyに向かって生き続けることをサポートしていることを確認しています。そうしないと上記は役に立たず、http-server-closeモードに戻ることができます。

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

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

これは、SSLフェーズキャッシュのパフォーマンスを調べる必要がある場合もあります(SSLハンドシェークが必要な場合を除いて)複数のHAproxyサーバをアクティブにしている場合、RFC5077のサポート(v1.6 +が必要)。

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

関連する問題