为了测试我的程序,我希望尽可能快地发送大约50个http请求。目前我正在使用bash脚本调用curl&发送每个请求,如
curl "http://my.host.com/test.php?param=1" &
curl "http://my.host.com/test.php?param=2" &
curl "http://my.host.com/test.php?param=100" &
但似乎不够快。我想因为每个curl调用将首先建立一个tcp连接,如果连接只建立一次,性能可以提高。还有其他工具可以有效地发送请求吗?
答案 0 :(得分:6)
Apache附带了一个名为“ab”的程序用于基准测试。在网上,您可以使用许多压力测试应用程序。
答案 1 :(得分:3)
在PHP中(当然也在CURL中)有something really nice。
在google.com上进行1000次常规GET大约需要16秒,大约每秒63次请求。
答案 2 :(得分:3)
运行在同一台机器上的Apache JMeter可能非常快。
答案 3 :(得分:1)
不要使用bash。使用任何其他脚本语言(Perl,Python,无论如何),然后创建单个连接并尽快收听请求。对于奖励积分,启动多个线程,以便测试您的程序处理同时连接的能力!
答案 4 :(得分:1)
JMeter是load test apache的好方法。
从他们的网站:
Apache JMeter是开源的 软件,100%纯Java桌面 应用程序旨在加载测试 功能行为和措施 性能。它原来是 设计用于测试Web应用程序 但后来扩展到其他测试 功能
我该怎么办?
Apache JMeter可用于测试 静态和动态的表现 资源(文件,Servlets,Perl 脚本,Java对象,数据库和 查询,FTP服务器等)。它可以 用来模拟一个重负荷 服务器,网络或对象来测试它 力量或整体分析 不同负载下的性能 类型。你可以用它做一个 性能或图形分析 测试您的服务器/脚本/对象 重负荷下的行为。
答案 5 :(得分:1)
尽管你背景所有下载的事实,这仍然没有执行的原因是操作系统仍然必须加载curl(从缓存但仍然),为它创建一个进程,解析参数等。
您需要能够并行发送N个请求而无需启动新进程的内容。