我想使用 "ab" 工具对网站进行负载测试。但是,我不太清楚如何以轮询的方式访问多个URL。有没有什么技巧可以做到这一点?
我看到有些人在 ab 命令前添加 & 符号,但这并不是我要做的。
我想使用 "ab" 工具对网站进行负载测试。但是,我不太清楚如何以轮询的方式访问多个URL。有没有什么技巧可以做到这一点?
我看到有些人在 ab 命令前添加 & 符号,但这并不是我要做的。
用于比较多个URL性能的另一种替代方案是siege。
# install
sudo apt install siege
# show config
siege -C
# show help
siege --help
不使用并发,运行10个测试:
siege -b -c 1 -r once -i -f /var/tmp/urls_file.txt --no-parser --no-follow
要像ab一样只运行一个URL的siege,您可以省略-f参数并将URL作为参数传递:
siege -b -c 1 -r 10 --no-parser --no-follow "https://example.org"
示例输出:
{ "transactions": 10,
"availability": 100.00,
"elapsed_time": 3.96,
"data_transferred": 0.43,
"response_time": 0.40,
"transaction_rate": 2.53,
"throughput": 0.11,
"concurrency": 1.00,
"successful_transactions": 0,
"failed_transactions": 0,
"longest_transaction": 0.43,
"shortest_transaction": 0.00
}
选项:
-c
:并发用户数,默认为10。-r
,--reps=NUM
:运行测试的次数。
如果使用--reps=once
,则每个用户将仅通过urls.txt文件运行一次。-i
,--internet
:模拟互联网用户,随机访问URL。使用 Apache Benchmark(AB)无法从单个实例访问多个 URL。
你必须使用多个测试或者使用像 JMeter 这样的工具来满足需求。
注意:Apache Benchmark 不会测试诸如图像处理、ajax 调用等在实际情况中可能遇到的内容。