【问题标题】:How can we stimulate 10000 concurrent request?我们如何激发10000个并发请求?
【发布时间】:2014-09-22 00:02:17
【问题描述】:

有没有办法刺激10000个并发HTTP请求?

我试试攻城工具 但我的笔记本电脑只有 2000 个请求限制 我怎样才能发出 10000 个请求?

【问题讨论】:

  • 是编程题吗?

标签: http web concurrency


【解决方案1】:

生成大量并发请求的最简单的方法,它可能是 Apache 的 ab 工具。

例如,ab -n 100 -c 10 http://www.example.com/ 将请求给定网站 100 次,并发 10 个请求。

确实,同时请求的数量是受性质限制的。请记住,TCP 只有 65536 个可用端口,其中一些已经被占用,而前 1024 个通常是保留的,这使得每台机器理论上最多可以有大约 64500 个端口用于传出请求。

还有操作系统限制。例如,在 Linux 中,net.ipv4.* 组中有内核参数。

最后,您当然应该配置您的 HTTP 服务器来处理这么多的并发请求。在 Apache 中,它们是 StartServers 和它的朋友,在 nginx 中是 worker_processesworker_connections。另外,如果你有一些独立的动态处理器连接到你的网络服务器(例如 php-fpm),你也必须增加连接池中空闲进程的数量。

毕竟海量并行请求的目的应该是找到你的瓶颈,上面的步骤会给你一个公平的思路。

顺便说一句。如果您使用ab,请仔细阅读其最终报告。它可能看起来很简短,但它包含许多有用的信息(例如,“非 2xx 响应”可能表示由于过载而导致的服务器端错误。)

【讨论】:

    【解决方案2】:

    Jmeter 允许分布式测试,这意味着您可以设置一组计算机(一台作为主机,其余作为从机)来运行您需要的任意数量的线程。 Jmeter 有一个很好的文档在这里解释这一点。 . .

    http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.pdf

    还有更多信息在这里。 . .

    http://digitalab.org/2013/06/distributed-testing-in-jmeter/

    如果您没有足够的从机访问权限,您也可以在云上设置这一切,有几个服务可以做到这一点。

    【讨论】:

      【解决方案3】:

      您是否尝试过使用Apache JMeter?您可以创建一个web test plan,您可以使用多个选项。您可以按照here 的概述将请求包装在 ThreadGroup 中。您还可以生成广泛的报告和图表。如果简单的线程组还不够,您可以尝试将UltimateThreadGroup plugin 用于 JMeter。

      在单台机器上使用 JMeter 创建这么多线程时,内存不足,无法为线程分配新堆栈。为此,您可以考虑减少线程的堆栈空间。 SO答案here中解释了如何做到这一点。该帖子还有其他一些替代方法。

      【讨论】:

        【解决方案4】:

        如果操作系统对允许的同时 TCP 连接数没有限制,则有一个注册表设置可以删除或增加该限制。在确定不是这种情况后,您可以编写一些包含 AJAX 请求的 JavaScript 并将其放入循环中。

        您可能需要node.js 来执行 JavaScript。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-11-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-10
          • 2018-08-24
          • 1970-01-01
          相关资源
          最近更新 更多