【发布时间】:2013-08-09 22:23:46
【问题描述】:
我注意到接受这个奇怪的问题。我有一个在 FreeBSD 上运行的服务器和一个在 Windows 上运行的客户端。
一切正常,但我已经开始进行一些压力测试。我注意到在 1000 个连接之后
客户端,服务器只是停止接受任何新连接。知道为什么吗?
我猜这与 TCP 协议握手有关,但其他人注意到了吗?有什么解决办法吗?
服务器
socket() // ipv4
bind()
listen(... , 0xFFFF)
while (true) {
sock=accept(socket, NULL, NULL);
if (sock<=0)
break;
close(sock);
}
客户
int count=0;
while (true) {
count++;
socket(...)
connect(...)
close(...)
fprintf(stderr, "Count: %i\r", count);
}
大约 1000 次连接后,服务器在接受中阻塞。
我已将 kern.ipc.maxsockets 设置为 65535,但没有效果。
【问题讨论】:
-
可能对您有帮助:stackoverflow.com/questions/12893379/… 检查链接页面
-
所有可用套接字卡在TIME_WAIT?
-
一些建议的工具来看看:
strace(1),netstat(8),Wireshark