赞
踩
1.什么是性能?
系统实现其功能的能力。
举例:系统能够稳定运行;高并发访问时系统不会出现宕机;系统能够同时支撑的
并发访问量;系统每秒可以处理完成的事务数。处理每个事务的资源开销,包括CPU、磁盘I/O、内存、网络传输带宽等;内存的分配回收是否及时、缓存规则的命中率。
2.性能测试指标
响应时间;TPS/QPS(系统每秒能够处理的交易和事务的数量,每秒查询率);并发用户;PV/UV(点击量、访客);点击率;吞吐量;资源开销。
3.常见的性能问题举例
负载均衡不均;内存泄漏;连接泄漏(数据库连接泄漏、HTTP连接泄漏或者其他的TCP/UDP连接泄漏);线程安全问题;死锁;网络架构或者应用架构扩展性问题
4.性能分析关键点
用户发起请求的顺序、请求之间的相互调用关系;
业务数据流走向、数据是如何流转的、经过了哪些应用服务、经过了哪些存储服务;
评估被压测系统可能存在的重点资源消耗,是I/O消耗型、CPU消耗型,还是内存消耗型;
关注应用的部署架构;
应用的并发架构是采用多线程处理还是多进程处理,重点需要关注是否会死锁、数据是否存在不一致、线程同步锁是否合理(锁的粒度一般不宜过大,过大时可能会影响并发线程的处理)
5.性能测试工具的选取
常见的有LoadRunner、JMeter、nGrinder等
一般性能测试工具都是基于网络协议开发的,所以我们需要明确待压测系统使用的协议,尽可能和被压测系统的协议保持一致,或者至少要支持被压测系统的协议;
理解每种工具实现的原理,比如哪些工具适用于同步请求的压测,哪些工具适用于异步请求的压测;
压测时明确连接的类型,比如属于长连接还是短连接、一般连接多久能释放。
明确性能测试工具并发加压的方式,比如是多线程加压还是多进程加压,一般采用的都是多线程加压。
6.硬件配置和软件配置
硬件配置一般包括:服务器的CPU配置、内存配置、硬盘存储配置、集群环境下还要包括集群节点的数量配置
软件配置一般包括:
操作系统配置:操作系统的版本以及参数配置需要同线上保持一致;应用版本配置:应用版本要和线上保持一致,特别是中间件、数据库组件等的版本,因为不同版本,其性能可能不一样;参数配置:比如Web中间件服务器的负载均衡、反向代理参数配置、数据库服务器参数配置等。
7.网络配置
一般为了排除网络瓶颈,除非有特殊要求外,通常建议在局域网下进行性能测试,并且明确压测服务器的网卡类型以及网络交换机的类型,比如网卡属于千兆网卡,或者交换机属于百兆交换机还是千兆交换机等,这对我们以后分析性能瓶颈会有很大的帮助,在网络吞吐量较大的待压测系统中,网络有时候也很容易成为一个性能瓶颈。
8.调优模型
9.系统模型组件
10.分层分析模型
11.缓存调优
(1)如何让缓存的命中率更高?
(2)如何注意防止缓存穿透?
(3)如何控制好缓存的失效时间?
(4)如何做好缓存的监控分析?比如慢日志(Slow Log)分析、连接数监控、内存使用
监控等。
(5)如何防止缓存雪崩?缓存雪崩指的是服务器在出现断电等极端异常情况后,缓存中的数据全部丢失,导致大量的请求全部需要从数据库中直接获取数据,从而使数据库压力过大造成数据库崩溃。防止缓存雪崩需要注意:
· 要处理好缓存数据全部丢失后,如何能快速把数据重新加载到缓存中。
· 缓存数据的分布式冗余备份,当出现数据丢失时,可以迅速切换使用备份数据。
12.同步转异步推送
同步指的是系统收到一个请求后,在该请求没有处理完成时,就一直不返回响应结果,直到处理完成后才返回响应结果。
异步指的是系统收到一个请求后,立即把请求接收成功返回给请求调用方,在请求处理完成后,再异步推送处理结果给调用方,或者请求调用方间隔一定时间之后再重新来获取请求结果。
同步转异步主要解决同步请求时的阻塞等待问题。一直处于阻塞等待的请求,往往会造成连接不能快速释放,从而导致在高并发处理时连接数不够用,通过队列异步接收请求后,请求处理方再进行分布式的并行处理,从而达到处理能力扩展,并且网络连接也可以快速释放。
13.拆分
系统拆分带来的好处就是高并发的业务不会对低并发业务的性能造成影响,而且系统在硬件扩展时,也可以有针对性地进行扩展,避免资源的浪费。
14.任务分解与并行计算
15.索引与分库分表
索引指应用程序在查询时,尽量使用数据库索引查询,数据库表在创建时也尽量对查询条件的字段建立合适的索引。
常见的分库分表方式:
冷热数据分离的方式:一般将使用频率较高的数据称为热数据,查询频率较低或者几乎不被查询的数据称之为冷数据;
时间维度的方式:比如可以按照实时数据和历史数据分库分表;
一定的算法计算的方式:此种方式一般适用于数据都是热数据的情况,比如数据无法做冷热分离,所有的数据都经常被查询到,而且数据量又非常大。此时就可以根据数据中的某个字段执行算法(注意:这个字段一般是数据查询时的检索条件字段),使得数据插入后能均匀地落到不同的分表中去(由算法决定每条数据是进入哪个分表),查询时再根据查询条件字段执行同样的算法,就可以快速定位到是需要到哪个分表中去进行数据查询。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。