使用 Apache JMeter工具进行性能测试
一、性能测试的定义。
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,我们可以了解在各种工作负载下系统的性能,当负载逐渐增加时,可以观测系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。(更多内容,可参阅程序员在旅途)
二、性能测试的关注点 --- 系统吞吐量。
吞吐量是衡量系统性能的一个重要指标,在计算机领域,一个系统的吞度量(承压能力)与CPU的运算能力、外部接口、IO、处理任务的程序质量等紧密关联。当一个计算机系统的CPU运算速度更强,外部接口性能更好,IO传输速度更快、程序算法的质量更高的时候,相应地,系统处理任务的的速度就会越快,吞吐量自然就会上去,这时候我们就会认为系统的性能是更好的。
当我们想选择一些参数来评估一个系统的性能的时候,我们经常会见到 QPS(TPS)和并发数这两个词,QPS(TPS)指的是 每秒钟系统处理的request/事务 数量。并发数指的是 系统同时处理的request/事务数。那么这两个参数是如何衡量系统吞吐量的呢?这里需要清楚的是,QPS/并发数=响应时间,系统的响应时间越短,说明系统提供服务的能力越好。但是由于软硬件的限制,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,因为系统会超负荷工作,调度程序会更频繁的进行任务上下文切换、内存等其它消耗会导致系统性能下降。
三、如何提高系统的性能? --- 系统保持有一个合理的性能。
当我们部署一个Web系统程序的时候,这个系统的性能高低对用户而言直接的反馈就是响应时间,当响应时间越低,用户的使用体验越好。那我们该如何提高系统的性能呢?作为网站的运维人员和程序开发人员,对系统的性能提升方式有什么不一样的关注点呢?
3.1 运维人员