Cố gắng thực hiện những gì nó nói trong tiêu đề: giữ lại các phiên hiện có dưới tải cao và phục vụ tin nhắn 503 cho khách truy cập mới đến.
Vấn đề: nó hoạt động, nhưng các phiên không kéo dài quá 90 giây.
Kết quả hiện tại khiến tôi băn khoăn không biết có cài đặt hết thời gian không.
Mục đích
Tôi đang cố gắng để có được haproxy để:
- gửi yêu cầu cho các phiên mới đến phụ trợ-001 khi tổng số phiên trên giao diện dưới một ngưỡng nhất định.
- phục vụ lỗi 503 cho các phiên mới khi tổng số phiên trên giao diện vượt quá ngưỡng đó
- cho phép yêu cầu cho các phiên hiện tại ngay cả khi số phiên vượt quá ngưỡng
Bằng cách này, khách truy cập ở giữa điền vào biểu mẫu nhiều bước sẽ không bị bất ngờ bởi lỗi 503 và khách truy cập mới có thể được thông báo "vui lòng quay lại sau vì chúng tôi thực sự bận rộn ngay bây giờ".
Thiết lập
Các thiết lập như sau:
{visitors}
↓
[haproxy]
↓
[rails app on unicorn served by nginx] (right now just one
backend: 'backend-001')
phương cách hiện hành
Để đạt được những điều trên, tôi đang sử dụng cấu hình bên dưới.
Cái này là để thử nghiệm, với giới hạn rất thấp (10 kết nối ở mặt trước (fe_conn gt 10)), để giúp thử nghiệm dễ dàng hơn.
Để đặt máy chủ dưới một số tải, tôi đang sử dụng omeperf như sau:
omeperf --oose --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
vấn đề
Như đã đề cập ở trên, vấn đề là: nó gần như hoạt động, nhưng các phiên không kéo dài quá 90 giây.
Nếu bạn tiếp tục nhấp vào, bạn có thể giữ phiên của mình ngay cả khi có 10 phiên bận rộn.
Cố gắng mở một trang trên máy chủ với một phiên bản trình duyệt khác sẽ khiến bạn gặp phải lỗi 503.
Vì vậy, có vẻ như tôi gần như ở đó. Có ai có ý tưởng gì có thể gây ra thời gian phiên ngắn không?
Và đặc biệt là làm thế nào tôi có thể sửa nó :)
.