在网络开发中,许多开发者对一个基本问题感到困惑:一台服务器到底能支持多少个网络连接?本文将详细探讨这一问题,并为您提供清晰的解答。
很多人首先想到的答案是65535。理由是:“听说端口号最多有65535个,所以长连接最多只能保持65535个。”这种说法正确吗?还有人认为:“应该受到TCP连接中四元组空间大小的限制,计算下来大约是200多万亿个!”
如果您对这个问题也感到困惑,请听我讲一个故事!
关于服务器端并发的聊天


系统级:当前系统可打开的最大文件数量,可以通过fs.file-max参数进行修改。
用户级:指定用户可打开的最大文件数量,可以通过修改/etc/security/limits.conf文件进行设置。
进程级:单个进程可打开的最大文件数量,可以通过fs.nr_open参数进行修改。

$ sysctl -a | grep rmem net.ipv4.tcp_rmem = 4096 87380 8388608 net.core.rmem_default = 212992 net.core.rmem_max = 8388608

$ sysctl -a | grep wmem net.ipv4.tcp_wmem = 4096 65536 8388608 net.core.wmem_default = 212992 net.core.wmem_max = 8388608

服务端百万连接达成记



活动连接数量确实达到了100万:
$ ss -n | grep ESTAB | wc -l 1000024
当前机器内存总共是3.9GB,其中内核Slab占用了3.2GB之多。MemFree和Buffers加起来也只剩下100多MB了:
$ cat /proc/meminfo MemTotal: 3922956 kB MemFree: 96652 kB MemAvailable: 6448 kB Buffers: 44396 kB ...... Slab: 3241244KB kB
通过slabtop命令可以查看到densty、flip、sock_inode_cache、TCP四个内核对象都分别有100万个:


结语
互联网后端的一个业务特点就是高并发。然而,一台服务器最大究竟能支持多少个TCP连接,这个问题似乎却又在困惑着很多人。希望今天过后,您能够对这个问题有更深入的理解。
学习是一件痛苦的事情,尤其是在一天工作结束后再来看技术文章。我一直都在思考如何组织技术内容,以便让大家更轻松地理解。这篇关于服务器最大并发数的文章我已经酝酿很久了,之前写了几个版本都不满意。今天终于找到了一种让大家更容易理解的方式,算是过了自己这一关。
下次我们再来探讨客户端,敬请期待!!
以上就是漫画 | 一台Linux服务器最多能支撑多少个TCP连接?的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号