0

我正在为一个自定义应用程序开发一个基于 Linux 的测试工具,它需要为外部系统创建大约 200,000 个套接字,然后通过所述套接字生成流量并创建一些性能指标。

我想知道的是在 Linux 中执行此操作的最佳方法。首先,要拥有 200,000 个套接字,我们肯定会达到 FD 限制。FD限制可以增加这么高(在非常强大的机器上)吗?或者我们可以期望获得每个 Linux 实例的什么样的合理最大值?

此外,实现这种工具的最简单的第一个想法是每个测试客户端一个线程,这将创建连接、发送流量、测量性能等。我们可以为内核中的线程获得什么样的最大数量?还是让多个工作线程处理端点子集更有意义?

这是否可能使用一个 Linux 实现,或者将其拆分为多个服务器是唯一的选择?

4

1 回答 1

2

这个问题被称为“C10K”,当 10,000 个连接不再是问题时,它被扩展了。你可以在谷歌上找到很多信息。

在强大的 linux 机器(4 cpu,16GB ram)上,您应该能够达到 1M。

处理如此多的打开文件描述符的最简单方法是使用poll. 但是,您将不得不扩展主机的限制。

  • 超限
  • 内核文件描述符数
  • 套接字缓冲区的大小

请参阅C500K 问题文档

于 2013-08-28T20:44:22.543 回答