Puncte:0

HAProxy Timeouts și Streaming Backend - Se blochează pentru totdeauna

drapel ru
Sam

Am un backend în spatele haproxy care transmite un fișier către client folosind un script CGI. Încerc să setez un timeout pentru serverele mele backend. Toate funcționează bine, cu excepția acestui timeout.

Când setez opțiunea „server de expirare” din configurația haproxy la 1 secundă (doar pentru a testa - backend-ul durează cel puțin 2-3 secunde) și fac o cerere, după 1 secundă pune o intrare în fișierul jurnal pt. cererea de backend (înainte ca cererea să fie finalizată) și de acolo, se blochează pentru totdeauna. Clientul nu primește niciodată un răspuns, nicio eroare, nimic.

M-am uitat prin toate documentele pentru configurația haproxy și nu am găsit nicio opțiune de timeout care să aibă sens aici. Dar acesta pare a fi un comportament prestabilit foarte ciudat, care se blochează pentru totdeauna dacă expirarea este atinsă fără un răspuns complet (de atunci mi-am dat seama că setarea ar trebui să fie un timeout doar pentru anteturi - dar se pare că nu găsesc o altă setare de timeout pentru backend).

Haproxy pur și simplu nu acceptă niciun fel de răspuns HTTP de streaming? Înțeleg că nu putem trimite un antet - dar îl pot seta să trimită orice date pe care le are, astfel încât clientul să înțeleagă că este malformat?

Iată o linie de jurnal pentru una dintre aceste solicitări care „a expirat”:

Apr 28 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-2 - -00 - 1/1/0/0/+3 0/0 „POST / HTTP/1.1”

Configurație haproxy completă:

global
    log /dev/log local0
    log /dev/log local1 notificare
    chroot /var/lib/haproxy
    socket statistici /run/haproxy/admin.sock mod 660 nivel de administrare expose-fd ascultători
    statistici timeout 30s
    utilizator haproxy
    haproxy de grup
    demonul

    # Locații implicite ale materialelor SSL
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Vezi: 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-AESCMDHE-RSA-AES256-ECDSA-ECDSA-GCM -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 no-tls-tickets

implicite
    jurnal global
    modul http
    opțiunea httplog
    opțiunea dontlognull
    reexpedierea opțiunii
    reîncercări 3
    timeout queue 15m # Cât timp trebuie să aștepte un client pentru ca un server să devină disponibil.
    #maxconn 10000
    timeout client 15m
    timeout conectare 1s
    timeout server 10s
    sesiuni cu rată-limită 10000
    fişierul de erori 400 /etc/haproxy/errors/400.http
    fişierul de erori 403 /etc/haproxy/errors/403.http
    fişierul de erori 408 /etc/haproxy/errors/408.http
    fişierul de erori 500 /etc/haproxy/errors/500.http
    fişierul de erori 502 /etc/haproxy/errors/502.http
    fişierul de erori 503 /etc/haproxy/errors/503.http
    fişierul de erori 504 /etc/haproxy/errors/504.http

frontend http_front
    lega *:88
    statistici uri /haproxy?stats
    default_backend http_back
    #maxconn 10000

backend http_back
    echilibru minimumconn
    reîncercați toate erorile care pot fi reîncercate
    default-server maxconn 1 observa layer7 error-limit 1 on-error mark-down
    server NAME IP:PORT

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.