问题:
1.ipvsadm -L –timeout
Timeout (tcp tcpfin udp): 900 120 300
请问这里三个TIME_OUT说的是毫秒吗?
2.用ipvsadm -Lcn看,99%的状态都是FIN_WAIT,
而ESTABLISH的只有几十个,是不是可以考虑减小FIN_WAIT的时间?
它们是以秒为单位的。
缺省的FIN_WAIT超时是120秒。如果你的服务都是非常短的连接,可以考虑减少FIN_WAIT的超时时间,例如60秒或者30秒。
# ipvsadm -Lcn |awk '{print $3}'|sort |uniq -c |sort -rn
548 FIN_WAIT
456 NONE
80 ESTABLISHED
9 SYN_RECV
2 CLOSE
1 state
1 entries
TCP状态为NONE的是持久性模板,它是记录来自同一IP地址的访问调度到同一服务器。
TCP状态为CLOSE的是已关闭连接。
# ipvsadm -L –timeout
Timeout (tcp tcpfin udp): 900 120 300
默认FIN_WAIT是120秒
修改成60
# ipvsadm –set 900 60 300
# ipvsadm -Lcn |awk '{print $3}'|sort |uniq -c |sort -rn
327 NONE
279 FIN_WAIT
62 ESTABLISHED
4 SYN_RECV
1 state
1 entries
如果是用长连接的话:
lvs的设置:
# ipvsadm –list –timeout
Timeout (tcp tcpfin udp): 7200 5 60
表明tcp session的timeout时间是7200秒。
设置timeout:
ipvsadm –set 7200 5 60
这个值如果设置太小,client将会收到 connection reset by peer此类的错误提示。
优化:
Improving TCP/IP performance
net.ipv4.tcp_tw_recyle=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.tcp_keepalive_time=1800
net.ipv4.tcp_fin_timeout=30
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.core.netdev_max_backlog=3000
刷新MAC地址:
/sbin/arping -f -q -c 5 -w 5 -I eth0 -s $WEB_VIP -U $GW
keealived方案切换的时候会内置自动发送send_arp命令