一个tcp连接需要:1,socket文件描述符;2,IP地址;3,端口;4,内存
原因:
建立连接需要消耗资源,详情查看:
https://blog.csdn.net/qj4522/article/details/84892762
https://blog.csdn.net/solstice/article/details/6579232
1、内存资源
tcp连接归根结底需要双方接收和发送数据,那么就需要一个读缓冲区和写缓冲区,这两个buffer在linux下最小为4096字节,可通过cat /proc/sys/net/ipv4/tcp_rmem和cat /proc/sys/net/ipv4/tcp_wmem来查看。所以,一个tcp连接最小占用内存为4096+4096 = 8k,那么对于一个8G内存的机器,在不考虑其他限制下,最多支持的并发量为:810241024/8 约等于100万。此数字为纯理论上限数值,在实际中,由于linux kernel对一些资源的限制,加上程序的业务处理,所以,8G内存是很难达到100万连接的,当然,我们也可以通过增加内存的方式增加并发量
2、CPU资源