有没有办法刺激10000并发HTTP请求?
我尝试攻城工具 但我的笔记本电脑只有2000个请求限制 我怎样才能提出10000请求?
答案 0 :(得分:7)
生成大量并发请求的最简单方法,可能是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_processes
和worker_connections
。此外,如果您的Web服务器附加了一些独立的动态处理器(例如php-fpm),则必须提高连接池中的空闲进程数。
毕竟,大规模并行请求的目的应该是找到你的瓶颈,上面的步骤将给你一个公平的想法。
顺便说一下。如果您使用 ab ,请仔细阅读其最终报告。它可能看起来很简短,但它带有很多有用的信息(例如"非2xx响应"可能表示由于过载导致的服务器端错误。)
答案 1 :(得分:4)
Jmeter允许分布式测试,这意味着您可以设置一组计算机(一个充当主设备,其余充当从设备),以根据需要运行多个线程。 Jmeter有一个非常好的文档解释这里。 。
http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.pdf
以及更多信息。 。
http://digitalab.org/2013/06/distributed-testing-in-jmeter/
如果您无法访问足够的从属计算机,您也可以在云端设置这一切,此外还有一些服务。
答案 2 :(得分:2)
您是否尝试过使用Apache JMeter?您可以创建web test plan,您可以使用多种选项。您可以按照概述here将请求包装在ThreadGroup中。您也可以生成大量的报告和图表。如果简单线程组不够,您可能会尝试将UltimateThreadGroup plugin用于JMeter。
在单个计算机上使用JMeter创建这么多线程时,内存不足以为线程分配新堆栈。为此,您可以考虑减少线程的堆栈空间。 SO答案here中解释了如何做到这一点。该帖子还有其他一些替代方法。
答案 3 :(得分:1)
如果没有允许的同时TCP连接数的操作系统限制,则有一个注册表设置可以删除或增加该限制。在确定不是这种情况之后,您可以编写一些包含AJAX请求的JavaScript并将其置于循环中。
您可能需要node.js
来执行JavaScript。