测试与调优
测试
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改为以年为单位):
5000人/年
4年
20000人
假设在理想情况下,某系统的请求进入速度是1亿次/秒,系统处理的时间趋近为0,那么这个系统的并发量是多少呢?很显然:
1亿次/秒
趋近0
趋近0次
可见,虽然每秒有1亿次请求,但在某一随机时刻观察系统,会发现系统中不存在请求堆积的问题,系统的并发数趋近0。 这就是并发数的含义,代表某一时刻在系统中的并发执行数。
TPS(Transactions Per Second)
一个页面有多个接口,用户的一次访问,计一个TPS,多个QPS。
吞吐量
从业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量
从网络角度看,吞吐量可以用:字节/秒来衡量
PV(Page View)
每访问一个页面计算一次。
Last updated
Was this helpful?