1.ab(Apache Benchmark)
- 简介
ab就是Apache Benchmark的缩写,顾名思义它是Apache组织开发的一款web压力测试工具。ab又是一个命令行工具,使用方便,统计功能强大,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力,但是没有图形化结果,不能监控。 - 安装
# linux安装
sudo yum -y install httpd
# windows安装
https://www.apachelounge.com/download/ 直接下载解压使用
- 使用
Usage: ab [options] [http[s]://]hostname[:port]/path
用法:ab [选项] 地址
选项:
Options are:
-n requests #执行的请求数,即一共发起多少请求。
-c concurrency #请求并发数。
-s timeout #指定每个请求的超时时间,默认是30秒。
-k #启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。默认时,不启用KeepAlive功能。
- 结果
例如:对baidu.com发起30个请求,并发数为3
2.jmeter
- 简介
Apache JMeter是Apache组织开发的基于Java的压力测试工具,在很多场合如个人测试,企业测试中都有广泛应用。 - 安装
直接访问http://jmeter.apache.org/download_jmeter.cgi下载解压使用
- 使用
JMeter使用功能强大,这里我以简单的测试例子来做下介绍
添加线程组
设置线程组参数
在线程租添加HTTP请求
设置HTTP请求详细信息
可以在该HTTP请求下添加运行结果监视器
运行
- 结果
3.locust
- 简介
locust是非常简单易用、分布式、python开发的压力测试工具。支持分布式测试,跨平台、易扩展,有图形化界面,可以快捷操作和下载报告。 - 安装
# 支持的python版本:2.7、3.X
# pip3 安装locust
pip3 install locust
# 查看是否安装成功
locust -h
# 运行 Locust 分布在多个进程/机器库
pip3 install pyzmq
# webSocket 压测库
pip3 install websocket-client
- 使用
编写压测脚本ceshi.py
from locust import HttpLocust, TaskSet, task
# 定义用户行为
class UserBehavior(TaskSet):
@task
def baidu_index(self):
self.client.get("/")
class WebsiteUser(HttpLocust):
task_set = UserBehavior # 指向一个定义的用户行为类
min_wait = 3000 # 执行事务之间用户等待时间的下界(单位:毫秒)
max_wait = 6000 # 执行事务之间用户等待时间的上界(单位:毫秒)
简单的运行
locust -f locust测试脚本.py --host=URL地址
访问 http://localhost:8089 进入压测首页,点击start swarming进入压测界面
- 结果
比较:
ab | Jmeter | locust | |
---|---|---|---|
使用语言 | C | Java | Python |
图形界面 | 无 | 有 | 有 |
优势 | 使用简单,上手学习较快,提供需要的基本性能指标 | 功能强大,插件丰富,支持生成HTML报告 | 支持分布式、压测数据支持导出 |
参考:
https://docs.locust.io/en/stable/
https://httpd.apache.org/docs/2.2/programs/ab.html
https://jmeter.apache.org/usermanual/get-started.html