littlebot
Published on 2025-04-12 / 1 Visits
0

【源码】基于Go语言的网络性能测试框架

项目简介

Archery是一个基于Go语言开发的网络性能测试框架,用于对网站或服务开展压力测试与资源监控。用户通过简单配置和自定义,能模拟多用户并发访问,测试目标服务器性能并收集相关统计数据,支持单机和分布式部署。

项目的主要特性和功能

  1. 支持自定义测试场景,可按需定义请求类型、参数、并发用户数等。
  2. 能够指定每秒请求数(TPS),模拟不同压力下的服务器负载。
  3. 具备分布式部署能力,多台机器可协同进行大规模压测。
  4. 可监控目标服务器的CPU、内存等资源使用情况,助力分析性能瓶颈。
  5. 提供简洁的Web UI界面,便于管理和查看测试结果。

安装使用步骤

单机部署

  1. 已下载工程源码。
  2. 修改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`指定的端口)管理测试任务。

分布式部署

  1. 修改work.go,实现Work()函数,返回(bool, int)类型值,第一个值标记成功或失败,第二个值为消耗时间(单位:毫秒)。
  2. 执行go build编译项目,将可执行文件archery复制到控制机(master,只负责任务控制,不执行任务)和执行机(slave)。
  3. 在控制机执行./archery -mode master启动,若需指定访问端口,通过-port指定。
  4. 在执行机执行./archery -mode slave -master_addr [控制机的机器地址]启动。
  5. 若要监控目标服务器资源(CPU与内存占用),将可执行文件复制到目标服务器,执行./archery -mode monitor -master_addr [控制机的机器地址]启动监控。
  6. 访问http://[控制机的机器IP]:8018(或通过-port指定的端口)管理测试任务。

注意事项

分布式执行时,控制机和执行机网络应能相互访问;若要监控服务器资源,被监控的机器和控制机之间也应能相互访问。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】