如何在Linux中创建大量用于性能测试的套接字

时间:2013-08-28 19:44:04

标签: c linux multithreading sockets

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

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

此外,实现此类工具的最简单的第一个想法是每个测试客户端一个线程,它将创建连接,发送流量,测量性能等。我们可以获得哪些线程的最大数量核心?或者是否有多个工作线程处理端点的子集更有意义?

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

1 个答案:

答案 0 :(得分:2)

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

在强大的Linux机器上(4 cpus,16GB ram),你应该可以达到1M。

处理这种数量的打开文件描述符的最简单方法是使用poll。但是,您必须扩展主机的限制。

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

请参阅C500K problem文档