我可以让 TCP/IP 会话运行少于 60 秒吗?

par*_*par 8 tcpip connection tcp socket

我们的服务器因 TCP/IP 会话而过载,我们有 1200 - 1500 个会话。他们中的大多数都挂在 TIME_OUT 状态。事实证明,处于 TIME_OUT 状态的连接会占用一个套接字,直到 60 秒超时。

问题是服务器没有响应,许多客户端没有得到服务。

我做了一个简单的测试:使用 Internet Explorer 8.0 从服务器下载一个 XML 文件 下载在几分之一秒内完成。但是后来我看到 TCP/IP 连接在 TIME_OUT 状态下挂了 60 秒。

有没有办法摆脱 TIME_OUT 等待或减少为新连接释放套接字的时间?

我明白为什么 TCP/IP 连接会进入 TIME_OUT 状态,但我不明白为什么 Internet Explorer 在 XML 文件下载结束后没有关闭连接。

细节。

我们的服务器运行用 Perl (mod-perl) 编写的 Web 服务。该服务向客户提供天气数据。客户端是一个 Flash 应用程序(实际上是嵌入在 Windows 应用程序中的 Flash ActiveX 控件)。

操作系统: Ubuntu

Apache“Keep Alive”选项设置为 0

小智 7

这是 TCP 堆栈中的设置。由于我们不知道您在哪个平台上,我们无法准确说出它的名称以及如何更改它。

更新

所以你使用的是 Ubuntu。您可以使用sysctlnet.inet.tcp.msl值减少到所需TIME_WAIT持续时间的一半(以毫秒为单位 - 请参阅man -S 4 tcp),例如sysctl net.inet.tcp.msl=2500。请注意这样做对可能在该TIME_WAIT时间段过去后到达的流浪数据包的影响。