how do I tune keepalive probes?
how do I tune keepalive probes?
To tune TCP keepalive probes in HAProxy, you can use the following options:
option srvtcpka
: Enable sending TCP keepalive probes on the server side connections. This helps prevent connection timeouts between HAProxy and the backend servers. You can enable it in a backend or listen section.
srvtcpka-idle <timeout>
: Set the time (in seconds) the connection needs to remain idle before TCP starts sending keepalive probes on the server side. Corresponds to the TCP_KEEPIDLE
socket option. Defaults to the system-wide tcp_keepalive_time
value if not set.
srvtcpka-cnt <count>
: Set the maximum number of keepalive probes TCP should send before dropping the connection on the server side. Corresponds to the TCP_KEEPCNT
socket option. Uses system default tcp_keepalive_probes
if not specified.
srvtcpka-intvl <timeout>
: Set the time (in seconds) between individual keepalive probes on the server side. Corresponds to TCP_KEEPINTVL
socket option. Falls back to system tcp_keepalive_intvl
if not set.
So for example, to enable server-side TCP keepalives, send a probe every 30 sec after 120 sec of inactivity, and drop the connection after 3 failed probes, you could configure:
backend servers
option srvtcpka
srvtcpka-idle 120
srvtcpka-cnt 3
srvtcpka-intvl 30
The equivalent client-side options are:
So you have full control over TCP keepalive behavior on both the client and server side of HAProxy to prevent idle connections from timing out in long-lived sessions.