测试与调优

测试

Test Driven Development

在编写某个功能的代码之前先编写测试代码,通过测试来推动整个开发的进行。

Debugging Sucks ! Testing Rocks !

这个口号就是鼓励我们多做测试,而不是多做调试。

性能调优

Go语言项目中的性能优化主要有以下几个方面:

  • CPU profile:报告程序的 CPU 使用情况,按照一定频率去采集应用程序在 CPU 和寄存器上面的数据

  • Memory Profile(Heap Profile):报告程序的内存使用情况

  • Block Profiling:报告 goroutines 不在运行状态的情况,可以用来分析和查找死锁等性能瓶颈

  • Goroutine Profiling:报告 goroutines 的使用情况,有哪些 goroutine,它们的调用关系是怎样的

系统性能评估

QPS(Queries Per Second)

每秒的响应请求数。

并发数与QPS

并发数 = QPS * 耗时

以大学招生为例:大一新生的招收速度是5000人/年,每个学生在大学停留4年,整个大学的人数是20000,于是(下面的QPS改为以年为单位):

QPS
耗时
并发数

5000人/年

4年

20000人

假设在理想情况下,某系统的请求进入速度是1亿次/秒,系统处理的时间趋近为0,那么这个系统的并发量是多少呢?很显然:

QPS
耗时
并发数

1亿次/秒

趋近0

趋近0次

可见,虽然每秒有1亿次请求,但在某一随机时刻观察系统,会发现系统中不存在请求堆积的问题,系统的并发数趋近0。 这就是并发数的含义,代表某一时刻在系统中的并发执行数。

TPS(Transactions Per Second)

一个页面有多个接口,用户的一次访问,计一个TPS,多个QPS。

吞吐量

从业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量

从网络角度看,吞吐量可以用:字节/秒来衡量

PV(Page View)

每访问一个页面计算一次。

Last updated

Was this helpful?