问题标签 [time-wait]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2346 浏览

windows - 环回接口上的 TIME_WAIT

为什么与环回接口的 TCP 连接最终会出现TIME_WAIT(套接字关闭并SO_DONTLINGER设置),但与不同主机的相同连接不会结束TIME_WAIT(它们会立即重置/销毁)?

以下是用于说明的场景:

(A) 两个应用程序,一个客户端和一个服务器,都在同一台 Windows 机器上运行。客户端通过服务器的loopback接口(127.0.0.1,端口xxxx)连接服务器,发送数据,接收数据,关闭socket(SO_DONTLINGER设置)。

假设连接非常短暂,因此客户端应用程序每秒都在建立和销毁大量连接。最终结果是套接字最终在 中TIME_WAIT,并且客户端最终耗尽了它的最大套接字数(在 Windows 上,默认情况下约为 3900,我们假设此值不会在注册表中更改)。

(B) 与场景 (A) 相同的两个应用程序,但服务器在不同的主机上(客户端仍在 Windows 上运行)。这些连接在各方面都是相同的,只是它们的目的地不是 127.0.0.1,而是其他一些 IP。这里客户端机器上的连接不会进入TIME_WAIT,客户端应用程序可以无限期地继续建立连接。

为什么会出现差异?

0 投票
3 回答
5205 浏览

sockets - TIME-WAIT暗杀和SO_REUSEADDR有什么区别

我正在阅读有关使用 SO_LINGER 套接字选项通过将逗留时间设置为零来故意“暗杀”时间等待状态的信息。这本书的作者接着说我们永远不应该这样做,而且一般来说我们永远不应该干预时间等待状态。然后他立即建议使用 SO_REUSEADDR 选项绕过时间等待状态。

我的问题是,有什么区别?在这两种情况下,您都过早地终止了时间等待状态并冒着接收重复段的风险。为什么一个好一个坏?

0 投票
0 回答
2817 浏览

c# - 在 C# 中等待线程池

重复

等待池线程完成。

我有 X 个函数等待分配给线程池,线程池的最大线程数为 5。我需要找到一种解决方案,让主线程等待所有 X 个函数执行完毕。

代码如下所示:

我希望主线程等到所有函数都执行完毕。

一个简单的解决方案是创建 Rulecnt no of ManualResetEvents 并将它们传递给线程,并等待所有信号到达。

但是由于任何时候运行的最大线程数是 5,我们可以只使用 5 个 ManualResetEvents 吗?,如果可能的话怎么办?

或者如果有任何解决方案请解释一下?

0 投票
3 回答
23917 浏览

apache - TIME_WAIT 连接过多

我们有一个使用 Apache mod 代理的相当繁忙的网站(每天 100 万页浏览量),在 TIME_WAIT 状态下,连接数(>1,000)不断超载。连接到端口 3306(mysql),但 mysql 只显示几个连接(显示进程列表)并且执行良好。我们已经尝试改变一堆东西(保持活力开/关),但似乎没有任何帮助。所有其他系统资源都在合理范围内。

我四处搜索,这似乎表明更改了 tcp_time_wait_interval。但这似乎有点激烈。我以前在繁忙的网站上工作过,但从未遇到过这个问题。

有什么建议么?

0 投票
0 回答
249 浏览

console - 在控制台等待

可能重复:
暂停批处理文件一段时间

如何在没有“超时”命令的情况下在控制台(cmd)中等待 x 秒?

0 投票
4 回答
7164 浏览

c# - 如何在加载数据时显示启动画面以消磨时间?

启动我的应用程序时,我首先必须读取一些数据,必须初始化一些表单等等。在那个时候,用户只看到灰色正在准备显示一些表单。

这会持续几秒钟...

我想到了一个启动画面,它将数据加载到单独的线程中,并显示需要多长时间。还是只是一个状态栏?

你会怎么做这样的事情?

我正在使用 C# .NET 3.5 + Winforms

0 投票
1 回答
3907 浏览

java - TIME_WAIT 中的 tcp 连接不允许重新连接,java

在与服务器建立 tcp 连接后,我关闭了我的linux应用程序并调用了 Socket.close()。

检查 netstat -pant,我看到连接处于 TIME_WAIT 状态。

这会阻止我立即连接回服务器,因为我使用相同的端口进行连接。相反,我必须等待连接超时 TIME_WAIT 状态才能重新连接。

我玩过 - 没有运气 - 使用套接字方法:set_so_timeout()、set_keepalive()、set_so_linger() 和 set_reuseaddr() - 在这篇文章中,该方法的确切拼写可能不正确。

我的问题是如何让连接脱离 TIME_WAIT 状态,以便立即再次建立连接?

请告诉我。

谢谢,jbu

0 投票
1 回答
2331 浏览

connection - 休眠导致太多 time_wait 连接

我正在使用 Hibernate 3,我遇到了与关闭连接相关的问题。

我正在使用 c3p0-0.9.1.2.jar 并检查了 Hibernate 打开的与数据库服务器的连接,我发现已经建立了 5 个连接;在服务器的一些 TCP 端口(见下面的日志)。

但是这些已建立的连接会不断更改它们建立的 TCP 端口,从而释放它们使用的较早端口,使这些端口处于 TIME_WAIT 状态(而不是关闭它们)。

这继续进行,数以百计;对于 TIME_WAIT 条件下的连接。

我不确定发生了什么以及为什么端口从已建立切换到 TIME_WAIT 并且之前的端口都没有关闭。

下面是通过运行 NETSTAT -ano|find "x.9" 获取的示例,其中 x.9 是数据库服务器 IP。

我使用的 Hibernate.properties 文件。

感谢帮助。

0 投票
6 回答
71449 浏览

networking - 服务器端的许多 TIME_WAIT 成本是多少?

假设有一个客户端与服务器建立了很多短期连接。

如果客户端关闭连接,客户端会有很多端口处于TIME_WAIT状态。由于客户端用完了本地端口,因此无法快速进行新的连接尝试。

如果服务器关闭连接,我会TIME_WAIT在服务器端看到很多s。然而,这有什么害处吗?客户端(或其他客户端)可以继续尝试连接,因为它永远不会用完本地端口,并且TIME_WAIT服务器端的状态数量会增加。最终会发生什么?有什么不好的事情发生吗?(减速、崩溃、连接断开等)

请注意,我的问题不是“目的是TIME_WAIT什么?” 但是“如果TIME_WAIT服务器上有这么多状态会发生什么?” 我已经知道在 TCP/IP 中关闭连接时会发生什么以及为什么TIME_WAIT需要状态。我不是想解决它,只是想知道它的潜在问题是什么。

简单地说,让我们说netstat -nat | grep :8080 | grep TIME_WAIT | wc -lprints 100000。会发生什么?操作系统的网络堆栈会变慢吗?“打开的文件太多”错误?或者,只是没有什么可担心的?

0 投票
1 回答
1106 浏览

jquery - 等到打印完成 - Jquery Asp.net MVC

我是新手。如果这是一个非常基本的问题,请原谅。我在 window.print() 上隐藏和显示 CSS。在 IE8 和 FF 上页面执行停止,直到我响应打印(打印或取消),然后它再次启动并完成页面加载。但在 IE6 和 IE7 上,页面加载不会等到我在打印对话框上做出响应。如何暂停页面执行,直到我在打印对话框上做出响应(打印或取消)?我不想使用 settimeout,因为它是针对特定时间的。如果我选择立即打印,则页面将不会加载,直到 settimeout 到期,反之亦然。请帮忙。