【问题标题】:How to send lots of POST requests QUICKLY如何快速发送大量 POST 请求
【发布时间】:2012-02-29 05:10:45
【问题描述】:

我正计划为我们的大学研究开发一个程序,该程序必须向不同的网址发送大量帖子请求。它必须尽可能快地工作(我们应该处理大约 100kk url)。我应该使用什么语言(目前我正在使用 c++、delphi 和 perl 编写)?

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

//对不起我的英语不好,但它似乎是我唯一能得到正确答案的地方

安德鲁

【问题讨论】:

  • 您可能只需破解 apache ab 代码即可为您解决问题。或者你可以同时运行多个ab。这是工具手册页:httpd.apache.org/docs/2.0/programs/ab.html
  • 你的意思是 100M urls 还是 100kk 只是一个错字?
  • 您可以使用RTC SDK 在支持 ISAPI 的 Web 服务器上开发应用 ISAPI 扩展来实现此目的。
  • @RobertMassaioli 谢谢,我会试试的。
  • @menjaraz 是的,1 亿。也谢谢!

标签: c++ multithreading perl delphi post


【解决方案1】:

每分钟 20-30k 完全是任意的。如果您在具有强大网络连接的 8 核机器上运行它,您可能会超越它。

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

【讨论】:

  • +1 当然,这将在大多数网络上受到 I/O 限制。大量线程来运行大量 DNS 查找(臭名昭著的异步不友好)并发送大量 POST 似乎是一个不错的计划。
【解决方案2】:

Webserver Stress Tool 声称能够模拟最多 10.000 个同时用户 生成的 HTTP 请求,并且在 Torry's site 中有一个条目:大概是用 Delphi 或 C++ Builder 编写的。

我的建议:

您可以使用诸如@987654323 之类的轻型 HTTP(S) 库和 Delphi(它恰好是我最喜欢的语言,所以我提倡它)编写您的 自定义压力工具(HTTP(S) 客户端) @ 和 OmniThreadLibrary 用于多线程。

请参阅此page 以获取线索/提示。


编辑:

摘自 RealThinClient_SDK331.zip 中的 Demos\Readme_Demos.txt

App Client、Server 和 ISAPI 演示可用于对 RTC 进行压力测试 通过打开使用具有强加密的远程功能的组件 来自每个客户端的数百个连接并泛滥 带有请求的服务器/ISAPI。

App Client Demo 非常适合使用 RTC 远程功能进行压力测试 多线程模式下的多个连接,可视化显示活动 并在实时图中为每个连接设置阶段。客户可以选择 在“代理”和标准连接组件之间,查看 带宽使用和分配的差异。

【讨论】:

    【解决方案3】:

    我听说 Erlang 非常适合此类应用程序,因为在 Erlang 中快速生成许多进程非常有效。但我认为使用 Python 也可以,只需使用 popen 模块来生成多个进程。 毕竟,您受限于可以同时运行的数量,具体取决于您的机器有多少个处理器。语言的选择可能并不重要,具体取决于您对从这些 URL 下载的数据执行的操作,因为这可能比生成成本更密集处理。

    【讨论】:

    • '毕竟你受限于你可以同时运行多少个处理器,这取决于你的机器有多少个处理器' - 即使只有一个 CPU,这个应用程序也可能会受到 I/O 限制,所以很多线程可以同时对很多 URL 运行大量 POST 请求。
    猜你喜欢
    • 1970-01-01
    • 2013-03-29
    • 2021-10-12
    • 2012-07-04
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多