我计划为我们的大学研究开发一个程序,该程序必须向不同的网址发送大量的帖子请求。它必须尽可能快地工作(我们应该处理大约100kk的URL)。我使用什么语言(目前我用c ++,delphi和perl编写)?
另外,我听说可以使用prefork在perl中编写一个多线程应用程序,每分钟处理大约20-30k。这是真的吗?
//抱歉我的英语不好,但它似乎是唯一能让我得到正确答案的地方
安德鲁
答案 0 :(得分:15)
每分钟20-30k完全是任意的。如果你在具有强大网络连接的8核机器上运行它,你可能会超越它。
但是,我认为您选择的编程语言/库并不重要。相反,您将遇到机器允许的并发TCP连接数,以及链路本身的带宽。
答案 1 :(得分:5)
Webserver Stress Tool声称能够模拟最多10,000个并发用户生成的HTTP请求,并且在Torry's site中有一个条目:可能是用Delphi或C ++ Builder编写的。< / p>
我的建议:
你可以用Delphi编写自定义压力工具(HTTP(S)客户端)(它恰好是我最喜欢的语言,所以我提倡它),使用轻型HTTP(S)库,如{{ 3}}和RTC SDK用于多线程。
请参阅此OmniThreadLibrary以获取线索/提示。
修改强>
摘自RealThinClient_SDK331.zip中的Demos \ Readme_Demos.txt
App Client,Server和ISAPI演示可用于对RTC进行压力测试 通过打开使用具有强加密的远程功能的组件 来自每个客户端的数百个连接并充斥着 带请求的服务器/ ISAPI。
App Client Demo非常适合使用压力测试RTC远程功能 多线程模式下的多个连接,可视化显示活动 和实时图表中每个连接的阶段。客户可以选择 在“代理”和标准连接组件之间,看到了 带宽使用和分配的差异。
答案 2 :(得分:1)
我听说Erlang对于这样的应用程序非常好,因为在Erlang中快速生成许多进程非常有效。但我认为使用Python也可以,只需使用popen模块来生成多个进程。 毕竟,根据机器的处理器数量,您可以同时运行多少。语言的选择可能无关紧要,这取决于您从这些URL下载的数据所做的事情,因为这可能比产生的成本更加处理密集。