一台服务器最大能支持多少条 TCP 连接
内容提要
本文介绍了Linux系统中服务器最大文件打开数限制以及一台服务器最大能支持多少连接的问题。调整关键参数可以增加服务器能打开的最大文件数。一台4GB内存的服务器大约可以支持100万个连接。客户端机器最多能发起的连接数量取决于IP和端口的组合,一台client机器最多可以建立65535个连接。文章还讨论了全连接队列长度和端口被占用等问题。最后,给出了做一个长连接推送产品,支持1亿用户需要多少台机器的评估。
关键要点
-
Linux系统中服务器最大文件打开数限制由三个关键参数决定:fs.file-max、soft nofile和fs.nr_open。
-
root用户不受fs.file-max限制,soft nofile和hard nofile之间存在耦合关系。
-
调整服务器最大文件数的示例:设置fs.file-max和fs.nr_open为110万,soft nofile和hard nofile为100万。
-
一台4GB内存的服务器理论上可以支持100万个TCP连接,但实际情况受内存和CPU限制。
-
客户端机器最多可以建立65535个连接,具体取决于IP和端口的组合。
-
通过增加客户端的IP数量或连接不同的服务端,可以突破65535个连接的限制。
-
全连接队列长度由net.core.somaxconn控制,默认值为128,需根据实际情况调整。
-
处理'too many open files'错误需修改fs.file-max、soft nofile和fs.nr_open参数。
-
一台服务器的最大连接数受内存大小限制,4GB内存的服务器可支持约100万个空连接。
-
长连接推送产品支持1亿用户,估算需要约20台服务器,假设每台服务器支持500万条连接。