问题标签 [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.
sockets - 当 FIN-WAIT-2 时间用完时,主动关闭器会进入什么状态?
当 FIN_WAIT2 时间用完且最后一个 FIN 不是来自另一端时,活动更接近的下一个状态是什么?TIME-WAIT
还是CLOSED
?
我们知道在linux系统中,FIN-WAIT-2可以在文件/proc/sys/net/ipv4/tcp_fin_timeout中设置:man tcp(7)
tcp_fin_timeout (integer; default: 60; since Linux 2.2)
这指定在强制关闭套接字之前等待最终 FIN 数据包的秒数。这严格违反了 TCP 规范,但需要防止拒绝服务攻击。在 Linux 2.2 中,默认值为 180。
TCP_LINGER2(从 Linux 2.4 开始)
孤立的 FIN_WAIT2 状态套接字的生命周期。此选项可用于覆盖文件 /proc/sys/net/ipv4/tcp_fin_timeout 中此套接字的系统范围设置。不要与 socket(7) 级别的选项 SO_LINGER 混淆。此选项不应在旨在可移植的代码中使用。
我不太确定这个 TCP 套接字在FIN_WAIT2
时间用完后会进入的状态,被强制关闭,转移到CLOSED
?还是直接跳入TIME-WAIT
状态?
我做了一个测试:
1:回声 3 > /proc/sys/net/ipv4/tcp_fin_timeout
2 : 对 linux 上运行的 tomcat 进行基准测试
原来很多TIME-WAIT
出现在netstat
堆积中,是不是说FIN_WAIT2
时间用完后,socket就跳进了TIME-WAIT
?
还有一个问题:我改变了这个:
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
正如其他人所说:“重用套接字”,并保留tcp_fin_timeout:3
。但什么都没有改变, TIME-WAIT
只是在积累。与状态中的套接字tcp_tw_reuse
无关,套接字不能重复使用吗?TIME-WAIT
TIME-WAIT
似乎echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
可以减少TIME-WAIT
计数,并将其保持在较低水平,而不必理会负载平衡问题。
linux - 未创建 TCP 侦听套接字
我正在开发一个 Qt 应用程序并遇到相当奇怪的网络问题。让我从最终用户的角度展示它的外观。
首先,我启动我的服务器并验证它是否正在侦听目标端口:
然后我用 telnet 连接到服务器:
Netstat 显示现在已建立连接。到目前为止没有什么特别的:
然后服务器根据特定于应用程序的超时断开连接。目前设置为 10 秒:
然后我关闭服务器并验证监听套接字是否被破坏:
最后我再次启动服务器,但监听端口不再显示:
结果客户端无法连接到服务器:
我在这里做错了什么?我倾向于认为这是一个配置问题,而不是应用程序中的错误。这种情况似乎适用于我笔记本电脑的 Ubuntu。上述输出也是在 linux box 上产生的。
更新:这两个环境中的另一件事是 qt 版本。在我的笔记本上我有 4.8.6,在 linux 机器上它是 4.6.2。不确定是否重要。
sockets - Zabbix 代理窗口 TIME_WAIT 套接字
我对 Zabbix windows 代理有一个大问题。
代理有很多处于 time_wait 状态的套接字:
为什么代理会打开所有这些套接字?
有没有办法关闭这个套接字?
我有很多监控项目,可能是这个问题吗?间隔时间约为10分钟。
谢谢您的任何帮助
c# - 在接受客户端连接 TCPLISTENER 之前等待特定时间
我想在服务器接受客户端连接之前等待 10 秒,我一直在网上寻找,但我没有找到一个例子,
这是我写的代码,有没有人可以提供解决方案,非常感谢:
apache - Apache - 如何测试 tcp_tw_reuse 效果?
我正在为一个端口不足的 Apache 服务器而苦苦挣扎。我相信我的问题是处于 TIME_WAIT 状态的连接。我试过 net.ipv4.tcp_fin_timeout=40 和 net.ipv4.tcp_tw_reuse=1。在生产环境启用此功能之前,如何测试 net.ipv4.tcp_tw_reuse 的效果?有什么提示吗?
node.js - 具有太多 time_wait 的节点应用程序
与 http.Agent.maxSockets 和服务器上创建的套接字数量有什么关系吗?
我使用 http.Agent() 将 maxSockets 设置为 30,但仍然有很多 TIME_WAIT 信号。好像超过30。
是不是不可能通过http.Agent()来控制socket数?如何减少 TIME_WAIT 的数量?
python - 等到网页在 Scrapy 中加载
我正在使用scrapy脚本使用“yield”加载URL。
该 URL 似乎至少需要 5 秒才能加载。所以我希望 Scrapy 等待一段时间来加载 item['Description'] 中的整个文本。我在 settings.py 中尝试了“DOWNLOAD_DELAY”,但没有用。
java - 在 JAVA 中如何连接并等待端口完成 TIME_WAIT
我在代码中有一部分检查端口可用性(打开连接并立即关闭它):
这里的问题是端口进入 TIME_WAIT 状态,该状态因系统而异。我想确保在close()
端口可用之后。
我能想到的一种方法是增加 60-90 秒的睡眠时间。但它似乎不是很优雅。
我可以使用 Java(不带 bash/batch)验证端口已从 TIME_WAIT 释放吗?
谢谢!
java - 使用 RestTemplate 时有很多 TIME_WAIT 连接?
我正在使用 Spring RestTemplate 对我的 RestService 进行 HTTP 调用。我使用的是 Spring Framework 3.2.8 版本的 RestTemplate。我无法升级它,因为在我们公司我们有一个父 POM,我们在其中使用 Spring Framework 版本 3.2.8,所以我需要坚持下去。
假设我有两台机器:
- machineA:这台机器正在运行我的代码,它使用 RestTemplate 作为我的 HttpClient,并且从这台机器上我对在另一台机器(machineB)上运行的 RestService 进行 HTTP 调用。我将以下代码包装在多线程应用程序周围,以便我可以对我的客户端代码进行负载和性能测试。
- machineB:在这台机器上,我正在运行我的 RestService。
现在我看到的问题是每当我在 machineA 上运行负载和性能测试时 - 意思是,我的客户端代码将对在 machineB 上运行的 RestService 进行大量 HTTPClient 调用,因为客户端代码是以多线程方式调用的。
我总是看到很多 TIME_WAIT 连接,machineA
如下所示:
我不认为我们在这里有很多 TIME_WAIT 连接是一个好兆头。 问题陈述:-
TIME_WAIT
在 machineA 上用一种简单的语言来说,这种高度连接意味着什么?- RestTemplate 发生这种情况是否有任何原因,或者只是我使用 RestTemplate 的方式?如果我在使用 RestTemplate 的方式上做错了什么,那么正确的使用方法是什么?
使用 RestTemplate 时是否需要设置任何keep-alive
标题或内容?Connection:Close
非常感谢任何输入/建议,因为我对这里发生的事情感到困惑。
下面是我如何以一种简单的方式在我的代码库中使用 RestTemplate(只是为了解释我如何使用 RestTemplate 的整个想法):
下面是我的简单任务类
c++ - pion http 服务器避免 TIME_WAIT
我正在使用 Win32 上的 pion c++ library(5.0.6) 开发 http 服务器和客户端。
问题是客户端断开连接后它始终在服务器端保持 TIME_WAIT ,我可以从netstat -ano看到它。有时我的服务器上大约有 10000 TIME_WAIT,我的客户会感到延迟,我不知道延迟是否与 TIME_WAIT 有什么关系。
我写了一个简单的服务器/客户端来说明问题
服务器:
客户端:
我猜服务器没问题,因为如果我使用 Chrome 等网络浏览器连接到服务器,一切都会正常,Chrome 关闭后不会有 TIME_WAIT。但客户端代码始终保持 TIME_WAIT。
客户端代码我错过了什么?