我们有一个自制的XMPP服务器,有人问我服务器的MSL (Maximum Segment Lifetime)是多少。
它是什么意思?我如何获得它?是Linux /proc
TCP设置中的某些东西吗?
发布于 2016-01-26 03:43:54
MSL (Maximum Segment Lifetime)是TCP数据段预计在网络中存在的最长时间(以秒为单位)。最值得注意的是,它在TCP连接关闭期间发挥作用--在CLOSE_WAIT和关闭状态之间,机器等待2msl(概念上是到互联网末端的往返旅行),以获取任何延迟的数据包。在这段时间内,机器为几乎关闭的连接保留资源。如果服务器很忙,那么以这种方式持有的资源可能会成为问题。一个“修复”是降低MSL,这样他们就可以更快地发布。通常情况下,这可以正常工作,但偶尔会导致混乱的失败场景。
在Linux (RHEL无论如何,这是我所熟悉的)上,“变量”/proc/sys/net/ipv4/tcp_fin_timeout
是2*MSL值。通常是60 (秒)。要查看它,请执行以下操作:
cat /proc/sys/net/ipv4/tcp_fin_timeout
要更改它,请执行以下操作:
echo 5 > /proc/sys/net/ipv4/tcp_fin_timeout
这是TCP状态图。您可以在底部找到有问题的等待。
发布于 2018-12-06 10:43:33
您还可以在netstat或ss中使用-o查看套接字的倒计时计时器,这有助于显示有关等待时间的具体数字。例如,TIME_WAIT does NOT使用tcp_fin_timeout (它基于通常硬编码为60s的TCP_TIMEWAIT_LEN )。
cat /proc/sys/net/ipv4/tcp_fin_timeout
3
# See countdown timer for all TIME_WAIT sockets in 192.168.0.0-255
ss --numeric -o state time-wait dst 192.168.0.0/24
NetidRecv-Q Send-Q Local Address:Port Peer Address:Port
tcp 0 0 192.168.100.1:57516 192.168.0.10:80 timer:(timewait,55sec,0)
tcp 0 0 192.168.100.1:57356 192.168.0.10:80 timer:(timewait,25sec,0)
tcp 0 0 192.168.100.1:57334 192.168.0.10:80 timer:(timewait,22sec,0)
tcp 0 0 192.168.100.1:57282 192.168.0.10:80 timer:(timewait,12sec,0)
tcp 0 0 192.168.100.1:57418 192.168.0.10:80 timer:(timewait,38sec,0)
tcp 0 0 192.168.100.1:57458 192.168.0.10:80 timer:(timewait,46sec,0)
tcp 0 0 192.168.100.1:57252 192.168.0.10:80 timer:(timewait,7.436ms,0)
tcp 0 0 192.168.100.1:57244 192.168.0.10:80 timer:(timewait,6.536ms,0)
发布于 2008-11-14 04:22:02
这看起来可以回答你的问题:
http://seer.support.veritas.com/docs/264886.htm
我建议您询问为什么有人会问您这个问题,并了解这一点如何适用于XMPP。
TCP/IP图解第一卷在线,更详细地描述了2MSL:Here
如wikipedia中所述,MSL也在TCP RFC 793中描述。
https://stackoverflow.com/questions/289194
复制相似问题