压力测试工具
[TOC]
压力测试工具
By:weimenghua
Date:2023.05.29.
Description:
一、JMeter
二、Locust
2.1 Locust 简介
Locust 是一种易于使用、可编写脚本且可扩展的性能测试工具。您可以在常规 Python 代码中定义用户的行为,而不是受限于 UI 或仅伪装成真实代码的领域特定语言。这使得 Locust 可以无限扩展并且对开发人员非常友好。
2.2 Locust 用法
安装 Locust
pip install locust
查看是否安装成功
locust -h
Locust 示例
from locust import HttpUser, between, task
class WebsiteUser(HttpUser):
wait_time = between(5, 15)
def on_start(self):
self.client.post("/login", {
"username": "test_user",
"password": ""
})
@task
def index(self):
self.client.get("/")
self.client.get("/static/assets.js")
@task
def about(self):
self.client.get("/about/")
参数说明
@task(3)单次执行的次数,可以理解是循环次数,数值越大执行的次数越多。不写默认1次。
执行脚本
locust -f locustfile.py
locust -f locustfile.py --logfile = locustfile.log
Locust 页面
访问地址:http://127.0.0.1:8089/
- Number of users:设置模拟用户数。(并发)
- Spawn rate :每秒产生(启动)的虚拟用户数。(递增数)
- Host:host 地址。
查看报告
三、go-stress-testing
go 实现的压测工具,每个用户用一个协程的方式模拟,最大限度的利用 CPU 资源。
参数说明:
- -c 表示并发数
- -n 每个并发执行请求的次数,总请求的次数 = 并发数 * 每个并发执行请求的次数
- -u 需要压测的地址
执行示例
./go-stress-testing-mac -c 1 -n 100 -u https://www.baidu.com/
压测结果展示
执行示例2
# 查看用法
./go-stress-testing-mac
# 使用请求百度页面
./go-stress-testing-mac -c 1 -n 100 -u https://www.baidu.com/
# 使用debug模式请求百度页面
./go-stress-testing-mac -c 1 -n 1 -d true -u https://www.baidu.com/
# 使用 curl文件(文件在curl目录下) 的方式请求
./go-stress-testing-mac -c 1 -n 1 -p curl/baidu.curl.txt
# 压测webSocket连接
./go-stress-testing-mac -c 10 -n 10 -u ws://127.0.0.1:8089/acc
四、ab
使用 Homebrew 安装 Apache HTTP 服务器
brew install httpd
在 Linux 环境安装
yum -y install httpd
检查 ab 工具是否已安装
ab -V
使用 ab 工具测试 Apache HTTP 服务器
ab -n 10000 -c 100 http://localhost:80
ab -n 10 -c 1 "http://baidu.com/"
参数说明:
- -n:指定请求的总数。
- -c:指定并发的请求数。
- -s timeout:指定每个请求的超时时间,默认是30秒。
- -k:启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。默认时,不启用KeepAlive功能。
- http://localhost:80:指定要测试的 URL。