我已经设置了一台测试机器(在 linode 2048 机器上的 debian Squeeze 2.6.32)与返回大块 json 的 api 交互。它以 3000/分钟异步调用 API,API 返回 ~450kb 的有效负载。盒子上还有一个 http 服务器来显示调用结果。
在执行 netstat -s 时(正常运行时间为 20 天):
254329 packets pruned from receive queue because of socket buffer overrun
50678438 packets collapsed in receive queue due to low socket buffer
Run Code Online (Sandbox Code Playgroud)
这对我来说听起来不太好,所以我按照这些教程来调整 TCP 参数:
http://fasterdata.es.net/fasterdata/host-tuning/linux/test-measurement-host-tuning/
和
http://www.acc.umu.se/~maswan/linux-netperf.txt
但它似乎没有帮助。
关于套接字缓冲区的任何建议/教程/解释可能有助于理解和解决问题?
谢谢
当我使用 netstat 命令时,它显示..
tcp 0 0 本地主机:18056 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:16683 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:16701 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:16888 本地主机:mysql TIME_WAIT
本地主机WAIT2TIME_WAIT 本地主机WAIT2TIME
tcp 0 0 本地主机:17725 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:17682 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:17414 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:17606 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:17737 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:16632 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:16825 本地主机:mysql TIME_WAIT 本地主机WAIT 时域主机WAIT 0 0 0 本地主机:mysql TIME_WAIT
本地主机时
tcp …
我有一个(可能很旧)CentOS 4.5 服务器,里面有一个自定义的 Java 应用程序。
我发现该应用程序在运行一段时间后崩溃,并发现它正在处理 1024 个连接并在它死机时尝试再打开一个套接字。
事实上,如果我检查ulimit -n我可以确认它是 1024,所以应用程序正在关闭,因为它没有更多可用的文件描述符。
令我困扰的是,有数百个明显不活动的连接,处于“已建立关闭”状态,全部来自相对较少的 IP(大约 200 个),并且随着时间的推移和客户端连接,它们往往会加起来,很多就像我看到的这些netstat -nato:
tcp 0 0 ::ffff:10.39.151.20:10000 ::ffff:78.152.97.98:12059 ESTABLISHED off (0.00/0/0)
tcp 0 0 ::ffff:10.39.151.20:10000 ::ffff:78.152.97.98:49179 ESTABLISHED off (0.00/0/0)
tcp 0 0 ::ffff:10.39.151.20:10000 ::ffff:78.152.97.42:45907 ESTABLISHED off (0.00/0/0)
Run Code Online (Sandbox Code Playgroud)
我知道这不是 DOS 攻击,连接是合法的,但是在客户端连接并与服务器进行短数据交换后似乎没有关闭......而且速度很慢,因为它们是由 200 个客户端生成的(计数不同的IP)..
我应该调查一些奇怪的应用程序错误(可能在 jre 1.6 上),还是深入研究 CentOS 网络配置?我不知道还有什么可看的..
提前致谢,任何提示表示赞赏!
我们想在没有HttpStubStatusModule安装模块的情况下检查活动连接的数量。
什么是等效的 Linux 命令?
作为基线,我们在HttpStubStatusModule首先安装的机器上进行测试,例如
Active connections: 6146 <-- from HttpStubStatusModule
# netstat -an | grep :80 | wc -l
1266
# netstat -an | grep :443 | wc -l
25082
Run Code Online (Sandbox Code Playgroud)
在我看来,上述 netstat 都没有给我正确的数字。
任何的想法?
在 Linux 服务器上可以使用,netstat -tan | grep ESTABLISHED| wc -l但在带有watch -n1.
如果服务器不是很忙或者监控间隔足够大,这种方法可以正常工作。但是可以推荐什么作为高负载服务器的替代方案?
所以我lsof -i | wc -l定期运行,它告诉我在 420 行中,有 240 到 255 行处于CLOSE_WAIT状态。TCP连接如何进入这种状态?
我应该担心吗,我应该如何解决它?
是否可以让 netstat 显示建立连接的日期/时间?这些信息甚至存储在 Linux 中的任何地方吗?
我正在对我的一台服务器进行压力测试,它使用恒定的新网络连接流击中它,tcp_fin_timeout设置为 60,因此如果我发送恒定流,例如每秒 100 个请求,我希望看到滚动平均值6000 (60 * 100) 个连接处于一个TIME_WAIT状态,这种情况正在发生,但是查看netstat(使用 -o)查看计时器,我看到如下连接:
TIME_WAIT timewait (0.00/0/0)
Run Code Online (Sandbox Code Playgroud)
他们的超时已过期但连接仍然存在,然后我最终用完了连接。有谁知道为什么这些连接没有得到清理?如果我停止创建新连接,它们最终会消失,但是当我不断创建新连接时,它们不会,似乎内核没有机会清理它们?我是否需要设置一些其他配置选项以在连接过期后立即删除连接?
服务器正在运行 Ubuntu,而我的 Web 服务器是 nginx。它还有带有连接跟踪的 iptables,不确定这是否会导致这些TIME_WAIT连接继续存在。
谢谢马克。
端口被一些我不知道的奇怪进程使用已经有好几天了
最初我认为它与 SQL Server 相关。我尝试停止所有从 SQL 启动的服务 :)。
但它仍然是一样的。为了确定问题,我什至运行了 cports。
错误
这很奇怪!
我没有运行任何其他使用端口 80(Teamviewer 或 Skype)的服务。
这是我运行netsh http show urlacl 时得到的
URL Reservations:
-----------------
Reserved URL : http://*:2869/
User: NT AUTHORITY\LOCAL SERVICE
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;LS)
Reserved URL : http://+:80/Temporary_Listen_Addresses/
User: \Everyone
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;WD)
Reserved URL : http://+:80/116B50EB-ECE2-41ac-8429-9F9E963361B7/
User: NT AUTHORITY\NETWORK SERVICE
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;NS)
Reserved URL : https://+:443/C574AC30-5794-4AEE-B1BB-6651C5315029/
User: NT AUTHORITY\NETWORK SERVICE
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;NS)
Reserved …Run Code Online (Sandbox Code Playgroud) 我遇到了一些我不明白的奇怪行为。我正在 Windows 2003 Server 上安装软件。该软件需要绑定到特定的 UDP 端口和所有 TCP 地址才能侦听请求。我似乎能够绑定到我选择的几个端口,但不能绑定到其他端口;具体来说,我无法绑定到我需要的一个端口,即 5001。其他推测为空闲的端口(如 5002、5010)也会失败。我的第一个猜测是“它正在被另一个程序使用”,但它没有显示在 netstat 或 TCPView(来自 sysinternals)中,所以我不知道该怎么做。程序收到套接字错误 10048(地址已在使用中)。
这些是我用来尝试查找“违规”程序的示例命令:
c:\>netstat -a -v -n -o -p udp
Active Connections
Proto Local Address Foreign Address State PID
UDP 0.0.0.0:445 *:* 4
UDP 0.0.0.0:500 *:* 512
UDP 0.0.0.0:1434 *:* 1980
UDP 0.0.0.0:4500 *:* 512
UDP 0.0.0.0:5000 *:* 5920
UDP 0.0.0.0:5500 *:* 5288
UDP 127.0.0.1:123 *:* 856
UDP 127.0.0.1:1314 *:* 4376
UDP 172.20.1.10:123 *:* 856
UDP 172.20.1.10:137 *:* 4
UDP 172.20.1.10:138 *:* 4
(No UDP port …Run Code Online (Sandbox Code Playgroud) netstat ×10
linux ×4
networking ×4
tcp ×3
windows ×2
centos ×1
connections ×1
iis-7 ×1
lsof ×1
monitoring ×1
nginx ×1
performance ×1
port ×1
tcpip ×1
time-wait ×1
ubuntu ×1
udp ×1