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


8

我们的服务器上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状态,但是我不明白为什么XML文件下载结束后Internet Explorer无法关闭连接。

细节。

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

操作系统:Ubuntu

Apache“ Keep Alive”选项设置为0


如果您了解为什么它进入TIME_OUT状态,那么您必须了解为什么必须这样做以防止其他攻击和问题。您可以减少此超时,但是这样做还有其他后果。
davr 2010年

语法为KeepAlive on|offKeepAlive 0是Apache 1.1语法;我认为您没有使用它。
mark4o 2010年

1500个T / O会话不会使系统无响应。还有另一个原因。
poige 2011年

连接是否通过便宜的路由器进行?
LatinSuD 2014年

Answers:


7

这是TCP堆栈中的设置。由于我们不知道您所使用的平台,因此无法确切地说出它的名称以及如何更改它。

更新

因此,您正在使用Ubuntu。您可以使用sysctl将该net.inet.tcp.msl值减小到所需TIME_WAIT持续时间的一半(以毫秒为单位-参见man -S 4 tcp),例如sysctl net.inet.tcp.msl=2500。请注意,这样做对于经过TIME_WAIT一段时间后可能到达的漫游数据包的影响。


我们的服务器上运行Ubuntu的,我已经更新的细节

«1200-1500个»甚至不会消耗计算器,因此这不是调整
MSL

1

我想你是故意的TIME_WAIT。发起主动关闭的对等方是进入的对等方TIME_WAIT(请参见此处的状态转换图),因此,如果您可以让客户端关闭连接,则可以将其移至TIME_WAIT客户端。请参阅此答案以获取更多详细信息,以及有关TIME_WAIT问题及其解决方法的文章的链接。

如果您不能让客户端发出主动关闭,另一种选择是通过在关闭连接之前将linger设置为false来重置连接。这将导致RST发送而不是FIN


好的非常感谢!但是,当用户使用Internet Explorer加载XML文件时,如何控制TCP / IP连接?
标准杆

TIME_WAIT是正常的,除非您的服务器性能因此受到影响,否则我不必担心太多。当套接字在TIME_WAIT其中时,它会占用一些资源,但这并不意味着该连接仍处于打开状态或服务器仍在处理它。
Len Holgate 2010年

0

服务器无响应可能与TIME_WAIT状态下的连接数无关。目前尚不清楚“占用套接字”是什么意思-服务器应该早就在那时已close建立套接字。系统应该能够在TIME_WAIT状态下处理数万个连接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.