需要将并发HTTP连接数增加到85000

时间:2015-07-23 00:34:21

标签: linux curl nginx performance-testing connection

我有2台机器的设置。我使用一个作为服务器,另一个作为客户端。它们使用1Ghz链接直接连接。这两台机器都有4个内核,8Gb内存和几乎100Gb的磁盘空间。我需要调整Nginx服务器(我试用的那个,但我也可以使用其他任何一个)来处理85000个并发连接。我在服务器上有一个1kb的文件,我在客户端上使用curl来获取所有连接上的相同文件。 尝试各种调整设置后,当我调用curl大约40000次时,我有1500个已建立的连接和大约30000个TIME_WAIT连接。有没有办法让TIME_WAIT建立? 任何有关调整服务器和客户端的帮助都将非常感激。我很擅长使用Linux并试图掌握它。两台机器上的linux版本都是Fedora 20。

3 个答案:

答案 0 :(得分:0)

除了调整Nginx之外,您还需要根据tcp连接数,套接字数,打开文件数等限制来调整Linux安装。

这两个链接应该给你一个很好的概述:

https://www.nginx.com/blog/tuning-nginx/

https://mrotaru.wordpress.com/2013/10/10/scaling-to-12-million-concurrent-connections-how-migratorydata-did-it/

答案 1 :(得分:0)

您可能想要检查TCP缓冲区等用于所有这些连接的内存量。

请参阅此SO帖子:How much memory is consumed by the Linux kernel per TCP/IP network connection?

此外,此页面很好:http://www.psc.edu/index.php/networking/641-tcp-tune

鉴于您的两台计算机是同一个物理网络且延迟非常低,您可以使用相当小的TCP窗口缓冲区大小。现代Linux(您没有提及您正在使用的内核)具有自动调整这些缓冲区的TCP自动调整,因此除非您使用旧内核,否则不必担心这一点。

但是,无论如何,应用程序可以单独分配发送和接收缓冲区,这会禁用TCP自动调整,因此如果您正在运行执行此操作的应用程序,则可能需要限制缓冲区空间的大小。应用程序可以请求每个连接(SO文章中提到的net.core.wmem_max和net.core.rmem_max变量)。

答案 2 :(得分:0)

我建议https://github.com/eunyoung14/mtcp实现100万并发连接,我对mtcp进行了一些调整,并在使用32G ram和8个内核的二手Dell PowerEdge R210上进行了测试,以实现100万并发连接。