我使用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