Skip to content

Commit

Permalink
Merge pull request #131 from guowei-gong/master
Browse files Browse the repository at this point in the history
docs(README.md): 统一格式、修改 PV 和 UV 的解释
  • Loading branch information
link1st committed Sep 7, 2023
2 parents d138b83 + 5e71c62 commit 41dbb39
Showing 1 changed file with 28 additions and 28 deletions.
56 changes: 28 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
- 单台机器对 HTTP 短连接 QPS 1W+ 的压测实战
- 单台机器 100W 长连接的压测实战
- 对 grpc 接口进行压测
- 支持http1.1和2.0长连接
- 支持 http1.1 和 2.0 长连接
> 简单扩展即可支持 私有协议
## 目录
Expand Down Expand Up @@ -70,7 +70,7 @@ go 实现的压测工具,每个用户用一个协程的方式模拟,最大

```shell

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

```
Expand Down Expand Up @@ -119,15 +119,15 @@ go 实现的压测工具,每个用户用一个协程的方式模拟,最大

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

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

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

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

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

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

## 2、压测
### 2.1 压测是什么
Expand All @@ -138,17 +138,17 @@ go 实现的压测工具,每个用户用一个协程的方式模拟,最大

### 2.2 为什么要压测

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

### 2.3 压测名词解释
#### 2.3.1 压测类型解释

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


#### 2.3.2 压测名词解释
Expand All @@ -157,7 +157,7 @@ go 实现的压测工具,每个用户用一个协程的方式模拟,最大
| :---- | :---- |
| 并发(Concurrency) | 指一个处理器同时处理多个任务的能力(逻辑上处理的能力) |
| 并行(Parallel) | 多个处理器或者是多核的处理器同时处理多个不同的任务(物理上同时执行) |
| QPS(每秒钟查询数量 Query Per Second) | 服务器每秒钟处理请求数量 (req/sec 请求数/秒 一段时间内总请求数/请求时间) |
| QPS(每秒钟查询数量 Queries Per Second) | 服务器每秒钟处理请求数量 (req/sec 请求数/秒 一段时间内总请求数/请求时间) |
| 事务(Transactions) | 是用户一次或者是几次请求的集合 |
| TPS(每秒钟处理事务数量 Transaction Per Second) | 服务器每秒钟处理事务数量(一个事务可能包括多个请求) |
| 请求成功数(Request Success Number) | 在一次压测中,请求成功的数量 |
Expand All @@ -169,32 +169,32 @@ go 实现的压测工具,每个用户用一个协程的方式模拟,最大

#### 2.3.3 机器性能指标解释

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

#### 2.3.4 访问指标解释

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

### 2.4 如何计算压测指标

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

- 假设:网站每天的用户数(100W),每天的用户的访问量约为3000W PV,这台机器的需要多少QPS?
- 假设网站每天的用户数(100W),每天的用户的访问量约为 3000W PV,这台机器的需要多少 QPS ?
> ( 30000000\*0.8 ) / (86400 * 0.2) ≈ 1389 (QPS)
- 假设:单台机器的的QPS是69,需要需要多少台机器来支撑?
- 假设:单台机器的的 QPS 是 69,需要需要多少台机器来支撑?
> 1389 / 69 ≈ 20
## 3、常见的压测工具
Expand Down

0 comments on commit 41dbb39

Please sign in to comment.