linux上机器之间的tcp/ip连接数有限制吗?

新手上路,请多包涵

我有一个在 5 分钟内编写的非常简单的程序,它打开一个服务器套接字并循环请求并将发送给它的字节打印到屏幕上。

然后,我尝试对可以使用多少个连接进行基准测试,以尝试找出该程序可以支持多少并发用户。

在另一台机器上(它们之间的网络没有饱和)我创建了一个简单的程序,它进入一个循环并连接到服务器机器并发送字节“hello world”。

当循环为 1000-3000 时,客户端完成发送所有请求。当循环超过 5000 时,它在完成前 X 个请求后开始超时。为什么是这样?我确保在循环中关闭我的套接字。

你只能在一定时间内创建这么多连接吗?

此限制是否仅适用于同一台机器,我不必担心生产中 5000 多个请求都来自不同机器的情况?

原文由 erotsppa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 522
1 个回答

有限制,是的。见 ulimit

此外,还需要考虑 TIME_WAIT 状态。一旦 TCP 套接字关闭(默认情况下),端口在 TIME_WAIT 状态下保持 占用 2 分钟。该值是可调的。即使它们已关闭,这也会“使您无法使用套接字”。

运行 netstat 以查看 TIME_WAIT 的运行情况。

PS TIME_WAIT 的原因是为了处理socket关闭后数据包到达的情况。这可能是因为数据包延迟或另一方不知道套接字已关闭。这允许操作系统静默丢弃这些数据包,而不会“感染”不同的、不相关的套接字连接。

原文由 Jason Cohen 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题