haproxy版本:haproxy-1.8.0
通过抓包分析timeout client 和timeout server两项配置的作用。
timeout client 20s
timeout server 10s
这种情况下,haproxy先向连接的客户端发送fin命令,关闭客户端的连接,然后10s之后,再向后台服务发送rst命令。timeout client 10s
timeout server 30s
这种情况下,haproxy在等待30s之后,向后台服务发送rst命令,同时向客户端发送fin命令。
根据以上两种情况判断,haproxy关闭空闲连接,以timeout server时间为准;而timeout server是检查haproxy作为服务端的空闲连接,也即是客户端与haproxy之间的连接,timeout client 是检查haproxy作为客户端的空闲连接,也即是haproxy与后台服务之间的连接。网上很多说法是timeout client定义客户端与haproxy的空闲连接超时,timeout server定义haproxy与后台服务的空闲连接超时,从抓包分析来看,这些说法应该是错误的。timeout server时间到了,说明客户端连接可以关闭,此时如果timeout client设置大于timeout server设置,那么说明要将后台服务的连接保留一段时间,否则就是立马rst断开。