ForkSiliconFlowSiliconFlowpublished Feb 11, 2026seen 5d

siliconflow/llm-stress-testing

forked from link1st/go-stress-testing

Open original ↗

Captured source

source ↗
published Feb 11, 2026seen 5dcaptured 15hhttp 200method plain

siliconflow/llm-stress-testing

Description: go 实现的压测工具

License: NOASSERTION

Stars: 0

Forks: 0

Open issues: 0

Created: 2026-02-11T06:57:54Z

Pushed: 2026-01-07T06:33:40Z

Default branch: master

Fork: yes

Parent repository: link1st/go-stress-testing

Archived: no

README:

go实现的压测工具【单台机器100w连接压测实战】

![PkgGoDev](https://pkg.go.dev/github.com/link1st/go-stress-testing) ![Go Report Card](https://goreportcard.com/report/github.com/link1st/go-stress-testing) ![Stargazers over time](https://starchart.cc/link1st/go-stress-testing)

本文介绍压测是什么,解释压测的专属名词,教大家如何压测。介绍市面上的常见压测工具(ab、locust、Jmeter、go实现的压测工具、云压测),对比这些压测工具,教大家如何选择一款适合自己的压测工具,本文还有两个压测实战项目:

  • 单台机器对 HTTP 短连接 QPS 1W+ 的压测实战
  • 单台机器 100W 长连接的压测实战
  • 对 grpc 接口进行压测
  • 支持 http1.1 和 2.0 长连接

> 简单扩展即可支持 私有协议

目录

  • [1、项目说明](#1项目说明)
  • [1.1 go-stress-testing](#11-go-stress-testing)
  • [1.2 项目体验](#12-项目体验)
  • [2、压测](#2压测)
  • [2.1 压测是什么](#21-压测是什么)
  • [2.2 为什么要压测](#22-为什么要压测)
  • [2.3 压测名词解释](#23-压测名词解释)
  • [2.3.1 压测类型解释](#231-压测类型解释)
  • [2.3.2 压测名词解释](#232-压测名词解释)
  • [2.3.3 机器性能指标解释](#233-机器性能指标解释)
  • [2.3.4 访问指标解释](#234-访问指标解释)
  • [3.4 如何计算压测指标](#24-如何计算压测指标)
  • [3、常见的压测工具](#3常见的压测工具)
  • [3.1 ab](#31-ab)
  • [3.2 locust](#32-locust)
  • [3.3 JMeter](#33-JMeter)
  • [3.4 云压测](#34-云压测)
  • [3.4.1 云压测介绍](#341-云压测介绍)
  • [3.4.2 阿里云 性能测试 PTS](#342-阿里云-性能测试-PTS)
  • [3.4.3 腾讯云 压测大师 LM](#343-腾讯云-压测大师-LM)
  • [4、go-stress-testing go语言实现的压测工具](#4go-stress-testing-go语言实现的压测工具)
  • [4.1 介绍](#41-介绍)
  • [4.2 用法](#42-用法)
  • [4.3 实现](#43-实现)
  • [4.4 go-stress-testing 对 Golang web 压测](#44-go-stress-testing-对-golang-web-压测)
  • [4.5 grpc压测](#45-grpc压测)
  • [4.6 HTML测试报告与AI评分](#46-html测试报告与ai评分)
  • [5、压测工具的比较](#5压测工具的比较)
  • [5.1 比较](#51-比较)
  • [5.2 如何选择压测工具](#52-如何选择压测工具)
  • [6、单台机器100w连接压测实战](#6单台机器100w连接压测实战)
  • [6.1 说明](#61-说明)
  • [6.2 内核优化](#62-内核优化)
  • [6.3 客户端配置](#63-客户端配置)
  • [6.4 准备](#64-准备)
  • [6.5 压测数据](#65-压测数据)
  • [7、常见问题](#7常见问题)
  • [8、总结](#8总结)
  • [9、参考文献](#9参考文献)

1、项目说明

1.1 go-stress-testing

go 实现的压测工具,每个用户用一个协程的方式模拟,最大限度的利用 CPU 资源

1.2 项目体验

  • 可以在 mac/linux/windows 不同平台下执行的命令

> go-stress-testing 压测工具下载地址 > 查看帮助信息 go-stress-testing-mac --help

  • 有 go 环境安装

> 安装最新版本 go install github.com/link1st/go-stress-testing@latest > 安装路径在 echo $GOBIN 目录下,配置了 export PATH=$PATH:$GOROOT/bin:$GOBIN 可以在任意目录下执行 > 查看帮助信息 go-stress-testing --help

参数说明:

-c 表示并发数

-n 每个并发执行请求的次数,总请求的次数 = 并发数 * 每个并发执行请求的次数

-u 需要压测的地址

# 运行以 mac 为示例
./go-stress-testing-mac -c 1 -n 100 -u https://www.baidu.com/
  • 压测结果展示

执行以后,终端每秒钟都会输出一次结果,压测完成以后输出执行的压测结果

压测结果展示:

─────┬───────┬───────┬───────┬────────┬────────┬────────┬────────┬────────
耗时│ 并发数 │ 成功数│ 失败数 │ qps │最长耗时 │最短耗时│平均耗时 │ 错误码
─────┼───────┼───────┼───────┼────────┼────────┼────────┼────────┼────────
1s│ 1│ 8│ 0│ 8.09│ 133.16│ 110.98│ 123.56│200:8
2s│ 1│ 15│ 0│ 8.02│ 138.74│ 110.98│ 124.61│200:15
3s│ 1│ 23│ 0│ 7.80│ 220.43│ 110.98│ 128.18│200:23
4s│ 1│ 31│ 0│ 7.83│ 220.43│ 110.23│ 127.67│200:31
5s│ 1│ 39│ 0│ 7.81│ 220.43│ 110.23│ 128.03│200:39
6s│ 1│ 46│ 0│ 7.72│ 220.43│ 110.23│ 129.59│200:46
7s│ 1│ 54│ 0│ 7.79│ 220.43│ 110.23│ 128.42│200:54
8s│ 1│ 62│ 0│ 7.81│ 220.43│ 110.23│ 128.09│200:62
9s│ 1│ 70│ 0│ 7.79│ 220.43│ 110.23│ 128.33│200:70
10s│ 1│ 78│ 0│ 7.82│ 220.43│ 106.47│ 127.85│200:78
11s│ 1│ 84│ 0│ 7.64│ 371.02│ 106.47│ 130.96│200:84
12s│ 1│ 91│ 0│ 7.63│ 371.02│ 106.47│ 131.02│200:91
13s│ 1│ 99│ 0│ 7.66│ 371.02│ 106.47│ 130.54│200:99
13s│ 1│ 100│ 0│ 7.66│ 371.02│ 106.47│ 130.52│200:100

************************* 结果 stat ****************************
处理协程数量: 1
请求总数: 100 总请求时间: 13.055 秒 successNum: 100 failureNum: 0
************************* 结果 end ****************************

参数解释:

耗时: 程序运行耗时。程序每秒钟输出一次压测结果

并发数: 并发数,启动的协程数

成功数: 压测中,请求成功的数量

失败数: 压测中,请求失败的数量

qps: 当前压测的 QPS (每秒钟处理请求数量)

最长耗时: 压测中,单个请求最长的响应时长

最短耗时: 压测中,单个请求最短的响应时长

平均耗时: 压测中,单个请求平均的响应时长

错误码: 压测中,接口返回的 code 码:返回次数的集合

2、压测

2.1 压测是什么

压测,即压力测试,是确立系统稳定性的一种测试方法,通常在系统正常运作范围之外进行,以考察其功能极限和隐患。

主要检测服务器的承受能力,包括用户承受能力(多少用户同时玩基本不影响质量)、流量承受等。

2.2 为什么要压测

  • 压测的目的就是通过压测(模拟真实用户的行为),测算出机器的性能(单台机器的 QPS),从而推算出系统在承受指定用户数(100W)时,需要多少机器能支撑得住
  • 压测是在上线前为了应对未来可能达到的用户数量的一次预估(提前演练),压测以后通过优化程序的性能或准备充足的机器,来保证用户的体验。

2.3 压测名词解释

2.3.1 压测类型解释

| 压测类型 | 解释 | |:-----------------------------|:------------------------------------------------------------------| | 压力测试(Stress Testing) | 也称之为强度测试,测试一个系统的最大抗压能力,在强负载(大数据、高并发)的情况下,测试系统所能承受的最大压力,预估系统的瓶颈 | | 并发测试(Concurrency Testing) | 通过模拟很多用户同一时刻访问系统或对系统某一个功能进行操作,来测试系统的性能,从中发现问题(并发读写、线程控制、资源争抢) | | 耐久性测试(Configuration Testing) | 通过对系统在大负荷的条件下长时间运行,测试系统、机器的长时间运行下的状况,从中发现问题(内存泄漏、数据库连接池不释放、资源不回收) |

2.3.2 压测名词解释

| 压测名词 | 解释 | |:--------------------------------------|:----------------------------------------------| | 并发(Concurrency) | 指一个处理器同时处理多个任务的能力(逻辑上处理的能力) | | 并行(Parallel) | 多个处理器或者是多核的处理器同时处理多个不同的任务(物理上同时执行) | | QPS(每秒钟查询数量 Queries Per Second) | 服务器每秒钟处理请求数量 (req/sec 请求数/秒 一段时间内总请求数/请求时间) | | 事务(Transactions) | 是用户一次或者是几次请求的集合 | | TPS(每秒钟处理事务数量 Transaction Per Second) | 服务器每秒钟处理事务数量(一个事务可能包括多个请求) | | 请求成功数(Request Success Number) | 在一次压测中,请求成功的数量 | | 请求失败数(Request Failures Number) | 在一次压测中,请求失败的数量 | | 错误率(Error Rate) | 在压测中,请求成功的数量与请求失败数量的比率 | | 最大响应时间(Max Response Time) | 在一次压测中,从发出请求或指令系统做出的反映(响应)的最大时间 | | 最少响应时间(Mininum Response Time) | 在一次压测中,从发出请求或指令系统做出的反映(响应)的最少时间 | | 平均响应时间(Average Response Time) | 在一次压测中,从发出请求或指令系统做出的反映(响应)的平均时间 |

2.3.3 机器性能指标解释

| 机器性能 | 解释 | |:-----------------------|:-------------------------------------------------------------| | CPU利用率(CPU Usage) | CPU 利用率分用户态、系统态和空闲态,CPU 利用率是指:CPU 执行非系统空闲进程的时间与 CPU 总执行时间的比率 | | 内存使用率(Memory usage) | 内存使用率指的是此进程所开销的内存 | | IO(Disk input/ output) | 磁盘的读写包速率 | | 网卡负载(Network Load) | 网卡的进出带宽,包量 |

2.3.4 访问指标解释

| 访问 | 解释 | |:---------------------------|:---------------------------------------------------------------------------| | PV(页面浏览量 Page Views) | 一定时间范围内(时间范围可以是一天、一个月等自定义的时间段),用户每打开 1 个网站页面,记录 1 个 PV。用户多次打开同一页面,PV 值累计多次 | | UV(网站独立访客 Unique Visitors) | 一定时间范围内(时间范围可以是一天、一个月等自定义的时间段),通过互联网访问、流量网站的自然人。相同访客多次访问网站,只计算为 1 个独立访客 |

2.4 如何计算压测指标

  • 压测我们需要有目的性的压测,这次压测我们需要达到什么目标(如:单台机器的性能为 100 QPS ?网站能同时满足 100W 人同时在线)
  • 可以通过以下计算方法来进行计算:
  • 压测原则:每天 80% 的访问量集中在20%的时间里,这 20% 的时间就叫做峰值
  • 公式:( 总PV数*80% ) / ( 每天的秒数*20% ) =…

Excerpt shown — open the source for the full document.

Notability

notability 1.0/10

Routine fork of a repo