一台机器最多能撑多少个TCP连接? 今天掰扯清楚!
在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白。那就是一台机器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这个问题。很多同学看到这个问题的第一反应是65535。原因是:“听说端口号最多有65535个,那长连接就最多保持65535个了”。是这样的吗?还有的人说是应该受TCP连接里四元组的空间大小限制,这样算起来就是非常非常大的一个数字了。这两个答案都对,也都不对。 其实要想把这个问题搞清楚,最最最关键的地方在于要把TCP连接的两端里的角色分清楚-客户端和服务器端。你手头的任何一台服务器,一般情况下都即是服务器,又是客户端。例如对于你的开发的后端接口,对于用户来说你是服务器端。但你得请求Redis、Mysql去获取数据,这时候又变成了客户端。如果不把这台机器作为客户端和服务器端两种角色拆开来理解,你将永远被这个问题困惑下去。 所以本文分别从客户端、服务端两块来展开聊聊。 客户端 现在我们单独来说客户端,当一台机器作为客户端的时候,究竟能支持多少个TCP连接? 空嘴说没有啥意思,我们直接用代码来试试。 1.小试牛刀 开始实验之前我们先来check下手头机器上的端口数量的配置 $ sysctl -a | grep ip_local_port_range net.ipv4.ip_local_port_range = 15000 65000