第一章 认识性能测试
1.1 性能测试的目的?
- 发现被测系统的性能问题。
1) 系统中是否存在内存泄露,内存泄露是指应用程序代码再每次执行完后,不会主动释放内存资源而导致内存使用一直增加,最终服务器内存会全部耗光,程序运行逐渐变慢,最终因为无法申请到内存而退出运行,内存泄露不易被发现,需要在高并发条件下执行一段时间观察,内存是不是持续增加,才能暴露出来问题。
2)系统中是否存在线程安全问题。 线程安全问题就是高并发访问的多线程处理系统中经常出现的问题,如果系统中存在线程安全问题,就会出现多个线程先后更改数据,造成所得到的数据全部都是脏数据,造成严重的系统问题。
3)系统中是否存在死锁,死锁问题也是多线程系统中经常会遇到的一个经典问题,一般常见的有系统死锁和数据库死锁。
4)系统中是否存在网络架构或者应用架构扩展性问题,扩展性问题是指在性能指标无法满足的情况下,通过横向或者纵向扩展硬件资源后, 系统性能无法按照一定的线程规律快速递增。 - 了解系统的各项性能指标,通过性能压测来了解系统承受多大的并发访问量,系统的平均响应时间是多少,系统的TPS是多少等。
- 解决性能压测中存在的问题和性能瓶颈,通过不断的性能调优,使得系统可以满足预期的性能指标
1.2 如何做性能测试?
宏观的角度:系统能保证正常运行,高并发不会出现宕机、系统处理完成用户请求需要的时间、系统能同时支撑的高并发数、系统每秒可以处理完成的事务数。
微观的角度:处理每个事务的资