2012-02-29 17 views
4

我打算为我们的大学研究开发一个程序,它必须向不同的URL发送大量的请求。它必须尽可能快地工作(我们应该处理大约100kk的URL)。我用什么语言(目前我用C++,delphi和perl编写)?如何发送大量的POST请求很快

另外,我听说可以使用可以处理大约每分钟20-30k的prefork在perl中编写多线程应用程序。这是真的吗?

//对不起我的英文不好,但它似乎是在那里我能得到正确的答案

安德鲁

+0

你可能只需要破解apache的ab代码就可以为你做诡计了。或者你可以同时运行多个ab。这是工具手册页:http://httpd.apache.org/docs/2.0/programs/ab.html – 2012-02-29 05:16:02

+2

你的意思是100M网址或100kk只是一个错字? – menjaraz 2012-02-29 06:13:47

+0

您可以使用[RTC SDK](http://www.realthinclient.com/)在支持ISAPI的Web服务器上开发App ISAPI扩展来实现该功能。 – menjaraz 2012-02-29 07:19:22

回答

15

每分钟20-30K完全是任意的唯一地方。如果你在一台拥有强大网络连接的8核机器上运行它,你可能会超越它。

但是,我不认为你选择的编程语言/库在这里将会很重要。相反,您将遇到机器允许的并发TCP连接数,以及链路本身的带宽。

+3

+1当然,这将在大多数网络上受到I/O限制。运行大量DNS查询的线程(众所周知异步不友好),并发送大量的POST似乎是一个很好的计划。 – 2012-02-29 16:06:38

1

我听说Erlang对于这样的应用程序来说非常好,因为它很快就能在Erlang中产生很多进程。但我认为使用Python也可以,只需使用popen模块来产生多个进程即可。 毕竟你受限于你可以同时运行多少个,这取决于你的机器有多少处理器。语言的选择可能并不重要,这取决于您对从这些URL下载的数据所做的操作,因为这可能比产卵成本更高的处理密集度。

+0

'毕竟你受限于多少你可以同时运行,取决于你的机器有多少处理器' - 这个应用程序可能是I/O限制,即使只有一个CPU,所以很多线程可以运行大量POST请求同时发送到很多URL。 – 2012-02-29 16:03:43

5
Webserver Stress Tool

权利要求能够模拟由高达10.000同时用户产生的HTTP请求,并且在Torry's site一个条目的:据推测,这是写在Delphi或C++ Builder。

我的建议:

你可以写在Delphi的自应力工具(HTTP(S)客户端)使用光HTTP(这恰好是我最喜欢的语言,所以我主张吧)(S)库,例如RTC SDKOmniThreadLibrary用于多线程。

看到这个线索/提示page


编辑:

从演示\ Readme_Demos.txt摘录在RealThinClient_SDK331.zip

应用客户端,服务器和ISAPI演示可以使用用于压力测试RTC 部件通过打开 数百个来自每个客户端的连接并用请求填充服务器/ ISAPI的远程功能。

App客户端演示非常适用于在多线程模式下使用 多连接来压力测试RTC远程功能,可视化显示活动 以及活动图形中每个连接的舞台。客户可以在“代理”和标准连接组件之间选择 ,以查看带宽使用和分配方面的差异。

+1

+1非常好的答案! – ComputerSaysNo 2012-02-29 08:54:11