Tôi có một chương trình phụ trợ đằng sau haproxy truyền tệp tới ứng dụng khách bằng tập lệnh CGI. Tôi đang cố đặt thời gian chờ cho các máy chủ phụ trợ của mình. Tất cả đều hoạt động tốt, ngoại trừ thời gian chờ này.
Khi tôi đặt tùy chọn "máy chủ hết thời gian" trong cấu hình haproxy thành 1 giây (chỉ để kiểm tra - phần phụ trợ mất tối thiểu 2-3 giây) và đưa ra yêu cầu, sau 1 giây, nó sẽ đưa một mục nhập vào tệp nhật ký cho yêu cầu phụ trợ (trước khi yêu cầu được hoàn thành) và từ đó, nó bị treo mãi mãi. Khách hàng không bao giờ nhận được phản hồi, không có lỗi, không có gì.
Tôi đã xem qua tất cả các tài liệu về cấu hình haproxy và tôi không thể tìm thấy bất kỳ tùy chọn thời gian chờ nào hợp lý ở đây. Nhưng đây có vẻ là hành vi mặc định rất kỳ lạ, bị treo vĩnh viễn nếu hết thời gian chờ mà không có phản hồi hoàn chỉnh (tôi đã nhận ra rằng cài đặt được coi là thời gian chờ chỉ dành cho các tiêu đề - nhưng dường như tôi không thể tìm thấy cài đặt thời gian chờ khác cho phụ trợ).
Có phải haproxy không hỗ trợ bất kỳ loại phản hồi HTTP phát trực tuyến nào không? Tôi hiểu rằng chúng tôi không thể gửi tiêu đề - nhưng tôi có thể đặt tiêu đề đó chỉ gửi bất kỳ dữ liệu nào có trong đó để khách hàng nhận ra rằng nó không đúng định dạng không?
Đây là một dòng nhật ký cho một trong những yêu cầu đã "hết thời gian":
Ngày 28 tháng 4 09:32:51 print haproxy[29896]: 127.0.0.1:37662 [28/Apr/2022:09:32:47.317] http_front http_back/SERVERNAME 2/3007/23/46/4080 200 150 - - sD- - 1/1/0/0/+3 0/0 "POST / HTTP/1.1"
Cấu hình haproxy đầy đủ:
toàn cầu
nhật ký/dev/log cục bộ0
log /dev/log local1 thông báo
chroot /var/lib/haproxy
thống kê ổ cắm /run/haproxy/admin.sock chế độ quản trị viên cấp 660 trình nghe fd
thời gian chờ thống kê 30s
người dùng haproxy
nhóm haproxy
yêu tinh
# Vị trí tài liệu SSL mặc định
ca-base /etc/ssl/certs
crt-base/etc/ssl/riêng tư
# Xem: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA -CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
ssl-default-bind-options ssl-min-ver TLSv1.2 không có tls-vé
mặc định
đăng nhập toàn cầu
chế độ http
tùy chọn httplog
tùy chọn donlognull
gửi lại tùy chọn
thử lại 3
timeout queue 15m # Máy khách phải đợi bao lâu để máy chủ khả dụng.
#maxconn 10000
khách hàng hết thời gian chờ 15m
hết thời gian kết nối 1s
máy chủ hết thời gian 10s
phiên giới hạn tốc độ 10000
tệp lỗi 400 /etc/haproxy/errors/400.http
tệp lỗi 403 /etc/haproxy/errors/403.http
tệp lỗi 408 /etc/haproxy/errors/408.http
tệp lỗi 500 /etc/haproxy/errors/500.http
tệp lỗi 502 /etc/haproxy/errors/502.http
tệp lỗi 503 /etc/haproxy/errors/503.http
tệp lỗi 504 /etc/haproxy/errors/504.http
giao diện người dùng http_front
ràng buộc *:88
thống kê uri /haproxy?stats
default_backend http_back
#maxconn 10000
phụ trợ http_back
số dư ít nhất
thử lại tất cả các lỗi có thể thử lại
maxconn máy chủ mặc định 1 quan sát giới hạn lỗi layer7 1 đánh dấu lỗi
máy chủ TÊN IP:PORT