架构师训练营第七周总结
性能测试的方法
性能测试细分为:性能测试、负载测试、压力测试、稳定性测试。
性能测试提以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。
负载测试指对系统不断地增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值,如某种资源已经饱和状态,这时候继续对系统施加压力,系统的处理能力不但不能提高,反而会下降。
压力测试指超过安全负载的情况下,对系统继续施加压力,直到系统崩溃或不能再处理任何请求,以此获得系统最大压力承受能力。
稳定性测试指被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测试系统是否稳定。在生产环环境,请求压力是不均匀的。呈波浪特性,因为为了更地模拟生产环境,稳定性测试也应不均匀地对系统施加压力。
此描述主要描述的TPS与系统资源关系,随着系统资源负载不断上升当达到某一临界点TPS也会随之下降。
通常性能测试的几个指标
性能测试主要几个指标:平均响应时间、并发数、吞吐量、性能计数器等
吞吐量(TPS/QPS)=(1000/响应时间ms) *并发数
95%响应时间是指:并发10,100次压测试后,按100次平均响应时间排序,第95次的平均响应时间
性能计数器主要指:System Load,线程数,进程数,CPU,内存、磁盘、网络使用率。
性能优化的方法
1、先通过性能测试,获得性能指标
2、通过指标分析,发现性能与资源瓶颈点
3、通过架构与代码分析,寻找性能与资源瓶颈点关键
4、通过对架构与代码优化,优化关键技术点。平衡资源利用。
5、再次进行性能测试,看是否达到预期。
系统性能优化涉及的层面
1、机房与骨干网络性能优化(异寺多数据中心、专线网络、自建CDN)
2、服务器与硬件性能优化(使用更优的CPU、磁盘、内存、网卡、对软件性能的优化可能是数量级的提升,有时候超过对架构和代码的优化,前提是需要通过性能测试找到瓶颈。例如1G网卡与10G网卡的区别)
3、操作系统性能优化
4、虚拟机(JVM)性能优化
5、基础组件(升级第三方jar)性能优化
6、软件架构性能优化(缓存、异步、集群三板斧)
7、软件代码性能优化(并发编程、多线程、锁的合理使用;资源复用:线程池、对象池;异步编程:生产与消费者模式;数据结构:合理的使用数组、链表、hash表、树)
评论