连接太多的问题

时间:2010-07-23 03:33:30

标签: .net ajax web-applications greasemonkey

我正在使用GM_xmlhttpRequest(greasemonkey xmlhttpRequest)与我的应用进行通信。每半秒发送一些json来更新页面的状态。我在FireFox中运行了3页。使用netstat -a我得到了这些结果。

超过200行。为什么我要使用这么多端口!?!我怎么能......不这样做?并仍然与我的申请沟通。

注意:我所在的3个页面(例如google.com)与我的域名(localhost)不匹配,因此我非常确定正常的xmlhttpRequest不起作用(我没试过。我使用jquery作为包装器)

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:1234           My-PC:0             LISTENING
  TCP    127.0.0.1:1234         My-PC:19204         TIME_WAIT
  TCP    127.0.0.1:1234         My-PC:19205         TIME_WAIT
  [line 8...]
  [line 221...]
  TCP    127.0.0.1:1234         My-PC:19420         TIME_WAIT
  TCP    127.0.0.1:1234         My-PC:19421         TIME_WAIT
  TCP    127.0.0.1:1234         My-PC:19422         TIME_WAIT
  TCP    127.0.0.1:1234         My-PC:19423         TIME_WAIT

1 个答案:

答案 0 :(得分:0)

TIME_WAIT表示连接已关闭但如果某些数据包仍在浮动,则资源会保留一段时间。这是必要的,因为两台计算机通信之间的延迟抖动。抖动意味着从一台计算机到另一台计算机所需的时间不是恒定的。因此,您可能会收到一个关闭数据包,然后是其他一些数据包。如果操作系统立即重新使用src IP,src端口,dst IP,dst端口组合这些其他数据包可能会令人困惑(看起来像数据包损坏/欺骗攻击)。因此,操作系统会在资源上停留一段时间。

我不知道怎么做,但我明白操作系统在TIME_WAIT中可以使用多长时间的价值可以调整。至于什么似乎是你的首要问题,是的,如果你的网站数量很大,这可能是一个问题,因为它会占用资源。此外,当你说你“使用这么多端口”时,你只是在客户端使用一堆端口。每次建立新连接时,客户端都会使用新端口作为客户端端口号,最终如果您建立了足够的连接,它将重用以前使用过的端口号。这在客户端并不是真正的问题,它是服务器会遇到问题。需要明确的是,这不是“多少端口”的问题,而是连接数量(即本地地址对应于服务器应用程序的行数)。