Hier ist mein Vorschlag für HAProxy und SSE: Sie haben viele benutzerdefinierte Timeout-Optionen in HAProxy, und es gibt 2 interessante Optionen für Sie.
Die timeout tunnel
gibt Timeout für Tunnelverbindung an - verwendet für WebSockets, SSE oder CONNECT. Umgehen Sie Server- und Client-Timeout.
Die timeout client
die Situation behandelt, wo ein Client die Verbindung verliert (Netzausfall, verschwinden vor der ACK-Sitzung zu beenden, etc ...)
In Ihrem haproxy.cfg
, ist es das, was Sie tun sollten, zuerst in Ihrem defaults
Abschnitt:
# Set the max time to wait for a connection attempt to a server to succeed
timeout connect 30s
# Set the max allowed time to wait for a complete HTTP request
timeout client 50s
# Set the maximum inactivity time on the server side
timeout server 50s
Nichts Besonderes bis dahin.
nun noch im defaults
Abschnitt:
# handle the situation where a client suddenly disappears from the net
timeout client-fin 30s
Als nächsten Sprung auf Ihre backend
Definition und hinzufügen:
timeout tunnel 10h
Ich schlage vor, einen hohen Wert, scheinen 10 Stunden ok.
Sie sollten auch vermeiden, die Standardoption http-keep-alive
zu verwenden, SSE verwendet sie nicht. Verwenden Sie stattdessen http-server-close
.