タイトルに書かれていることをしようとしています。既存のセッションを高負荷で保持し、新しく到着した訪問者に503メッセージを提供します。
問題:動作しますが、セッションは約90秒以上持続しません。
現在の結果では、私が見逃しているタイムアウト設定があるかどうか疑問に思っています。
目的
私はhaproxyを取得しようとしています:
- フロントエンドのセッションの総数が特定のしきい値を下回ったときに、新しいセッションのリクエストをバックエンド-001に送信します。
- フロントエンドのセッションの合計数がそのしきい値を超えている場合、新しいセッションに503エラーを提供します
- セッション数がしきい値を超えた場合でも、既存のセッションの要求を許可します
このように、マルチステップフォームに入力しているビジターは503エラーに驚かないで、新しいビジターに「今忙しいので後で戻って来てください」と言うことができます。
セットアップ
セットアップは次のとおりです。
{visitors}
↓
[haproxy]
↓
[rails app on unicorn served by nginx] (right now just one
backend: 'backend-001')
現在のアプローチ
上記を達成するために、以下の構成を使用しています。
これは、テストを簡単にするために、非常に低い制限(フロントエンドで10接続(fe_conn gt 10))でテスト用です。
サーバーに負荷をかけるために、次のようにhttperfを使用しています。
httperf --hog --server staging.machine.tld --uri / do_some_things --wsess = 500,10,30 --rate 2
global
daemon
maxconn 10000
defaults
mode http
timeout connect 6s
timeout client 60s
timeout server 60s
balance roundrobin
option http-server-close
frontend http-in
bind [PUBLIC_IP]:80
default_backend backend-001
acl too_many fe_conn gt 10
use_backend b_too_many if too_many
backend backend-001
fullconn 10
appsession _session_id len 128 timeout 7200s
cookie SERVERID insert maxidle 7200s
server Server1 127.0.10.1:80 cookie backend-001 check
backend b_too_many
errorfile 503 /var/www/50x.html
問題
上記のように、問題は次のとおりです。ほとんど機能しますが、セッションは約90秒以上持続しません。
クリックし続けると、10のセッションがビジー状態であってもセッションを維持できます。
別のブラウザインスタンスでサーバー上のページを開こうとすると、503エラーが発生します。
だから、私はほとんどそこにいるようです。短いセッション時間を引き起こしている可能性のあるアイデアは誰にもありますか?
そして特に私がそれを修正する方法:)
(編集:「サーバー」行から「重み1 maxconn 10」を削除しました。関連性がなく、混乱する可能性があります)