项目简介
Archery是一个基于Go语言开发的网络性能测试框架,用于对网站或服务开展压力测试与资源监控。用户通过简单配置和自定义,能模拟多用户并发访问,测试目标服务器性能并收集相关统计数据,支持单机和分布式部署。
项目的主要特性和功能
- 支持自定义测试场景,可按需定义请求类型、参数、并发用户数等。
- 能够指定每秒请求数(TPS),模拟不同压力下的服务器负载。
- 具备分布式部署能力,多台机器可协同进行大规模压测。
- 可监控目标服务器的CPU、内存等资源使用情况,助力分析性能瓶颈。
- 提供简洁的Web UI界面,便于管理和查看测试结果。
安装使用步骤
单机部署
- 已下载工程源码。
- 修改
work.go
,实现Work()
函数,该函数执行单个压测操作,返回(bool, int)
类型值,第一个值标记成功或失败,第二个值为消耗时间(单位:毫秒)。若有多个任务按比例同时测试,按以下格式修改LoadWorkList
函数: ```go func (task *Task) Work1() (bool, int) { ... }
func (task *Task) Work2() (bool, int) { ... }
func (task Task) LoadWorkList() ([]WorkInfo,Task) {
var res []WorkInfo
res = append(res,WorkInfo{task.Work1,2,"title-1"}) // 2表示每个事务发2次请求
res = append(res,WorkInfo{task.Work2,5,"title-2"}) // 5表示每个事务发5次请求
return res,task
}
``
3. 若未安装Go,先安装Go,然后执行
go build。
4. 执行
./archery启动工具,若需指定访问端口,通过
-port指定。
5. 若要监控目标服务器资源(CPU与内存占用),将
archery可执行文件复制到被监控服务器,执行
./archery -mode monitor -master_addr [启动工具所在的机器地址] 启动监控。
6. 访问
http://[启动工具所在的机器IP]:8018(或通过
-port`指定的端口)管理测试任务。
分布式部署
- 修改
work.go
,实现Work()
函数,返回(bool, int)
类型值,第一个值标记成功或失败,第二个值为消耗时间(单位:毫秒)。 - 执行
go build
编译项目,将可执行文件archery
复制到控制机(master,只负责任务控制,不执行任务)和执行机(slave)。 - 在控制机执行
./archery -mode master
启动,若需指定访问端口,通过-port
指定。 - 在执行机执行
./archery -mode slave -master_addr [控制机的机器地址]
启动。 - 若要监控目标服务器资源(CPU与内存占用),将可执行文件复制到目标服务器,执行
./archery -mode monitor -master_addr [控制机的机器地址]
启动监控。 - 访问
http://[控制机的机器IP]:8018
(或通过-port
指定的端口)管理测试任务。
注意事项
分布式执行时,控制机和执行机网络应能相互访问;若要监控服务器资源,被监控的机器和控制机之间也应能相互访问。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】