当tcp连接数达到1000时,为什么连接的一部分断开?

时间:2018-05-30 08:04:49

标签: multithreading sockets tcp client-server tcp-ip

我使用socket写了两个程序。服务器侦听端口。它将为连接打开一个线程。客户端发送连接。

当我在本地运行服务器和客户端时,我可以创建5000个连接。但是,当我将服务器程序放在云服务器上时,我使用watch ss -s来查看tcp的连接数。在建立5000个连接的过程中,某些连接将自动关闭。

即使我只设置了1300个连接,一些tcp连接也将被关闭。我使用ulimit -n 65536命令将本地和远程线程的数量打开到65536。 而这个结果是不稳定的,有可能在接下来的1300个连接中,只有500个会成功,而800会失败....

为什么会这样?这是因为互联网的速度吗?还是因为线程过多?但我对当地的测试没有问题

以下是watch ss -s命令的结果:

TCP:   1310 (estab 953, closed 348, orphaned 0, synrecv 0, timewait 0/0), 
ports
0

Transport Total     IP        IPv6
*         0         -         -
RAW       0         0         0
UDP       10        7         3
TCP       962       959       3
INET      972       966       6
FRAG      0         0         0

0 个答案:

没有答案