一台服务器最大能支持多少条 TCP 连接

💡 原文中文,约5600字,阅读约需14分钟。
📝

内容提要

本文讨论了Linux服务器的最大文件打开数限制和一台服务器最大能支持的连接数。调整参数可以增大服务器能打开的最大文件数。一台4GB内存的服务器大约可以支持100万个TCP连接。客户端机器最多能发起的连接数取决于可用端口范围,一台机器最多可以建立65535个连接。讨论了全连接队列长度、端口被占用问题等。给出了做一个长连接推送产品,支持1亿用户所需的服务器数量评估。

🎯

关键要点

  • Linux服务器的最大文件打开数限制受fs.file-max、soft nofile和fs.nr_open三个参数影响。

  • root用户不受fs.file-max限制,仍可打开文件。

  • soft nofile和hard nofile参数需相互配合,hard nofile需大于soft nofile。

  • fs.nr_open参数需大于hard nofile,避免用户无法登录。

  • 修改内核参数时不建议使用echo命令,因重启后设置会失效。

  • 一台4GB内存的服务器理论上可支持100万个TCP连接,但实际受内存和CPU限制。

  • 客户端机器最多可发起65535个连接,受可用端口范围限制。

  • 通过多个IP或连接不同服务端可突破65535连接限制。

  • 全连接队列长度由net.core.somaxconn控制,默认值为128。

  • 解决'打开文件过多'错误需调整fs.file-max、soft nofile和fs.nr_open参数。

  • 一台服务器最大支持的TCP连接数受内存大小影响,4GB内存约可支持100万个连接。

  • 客户端每次建立连接消耗一个端口,最大连接数受端口限制。

  • 长连接推送产品支持1亿用户,128G内存服务器可支撑500万条连接,约需20台服务器。

➡️

继续阅读