常见性能测试

导言

能做好性能测试人的本事最主要也不是在如何熟练的使用LoadRunner,或者JMeter,主要的是对系统的理解和掌控,一种大局观。

常见性能指标

吞吐量(TPS, QPS):简单来说就是每秒钟完成的事务数或者查询数。通常吞吐量大表明系统单位时间能处理的请求数越多,所以通常希望TPS越高越好

响应时间:即从请求发出去到收到系统返回的时间。响应时间一般不取平均值,而是要去掉不稳定的值之后再取均值,比如常用的90%响应时间,指的就是去掉了10%不稳定的响应时间之后,剩下90%的稳定的响应时间的均值。从聚类的观点看,其实就是去掉离群点。

错误率:即错误请求数与总请求数之比。随着压力增加,有可能出现处理请求处理不过来的情况,这时错误数会不断增加。

三者有极大的关联,任何孤立的数据都不能说明问题。典型的关系是,吞吐量增加时,响应延迟有可能增加,错误率也有可能增加。因此,单拿出一个10w的TPS并不能说明问题。

性能调优的思路

一般情况,调优需要有个前提条件,即无论是用线上的真实流水还是线下的压力测试让问题扩大化,明显化。

根据这些比较明显的现象去初判问题,收集证据去验证初判结果成立,然后分析现象产生的原因,并尝试解决问题。

1、性能摸底测试

对于新上的系统或者是有过较大代码改动的系统来说,做一次摸底测试还是很有必要的。

    • 搞清楚系统的极限TPS是多少

    • 在压力上来时有没有暴露一些错误或者问题

    • 系统大致的资源占用情况是什么

    • 系统可能的性能瓶颈在哪。

2、定义性能优化的目标

性能优化的目标一般是吞吐量达到多少,90%响应时间小于多少,错误率小于多少。同时还需要关注其他的性能指标,cpu使用情况,内存使用情况,磁盘使用情况,带宽使用情况等。

可以很灵活,但目标要明确。

3、分析

分析性能问题原因,及解决方案。

4、优化并重新测试验证

性能调优思路 http://www.voidcn.com/blog/bigtree_3721/article/p-5786972.html

linux下性能监控命令 Linux工具进阶 — Linux Tools Quick Tutorial

关于JVM CPU资源占用过高的问题排查 关于JVM CPU资源占用过高的问题排查 - Less is More - OSCHINA - 中文开源技术交流社区

java排查工具 http://my.oschina.net/feichexia/blog/196575

jvm参数调优 http://www.cnblogs.com/java-zhao/archive/2016/02/08/5185092.html

java linux系统调优工具 IBM Developer

gc优化的一些思路 http://mm.fancymore.com/reading/gc%E4%BC%98%E5%8C%96%E7%9A%84%E4%B8%80%E4%BA%9B%E6%80%9D%E8%B7%AF.html

性能优化的思路和步骤 性能调优指南--计算机系统Java应用程序V0.1-java-火龙果软件工程

性能调优攻略 性能调优攻略 | 酷 壳 - CoolShell

JVM性能调优入门 JVM性能调优入门 - 简书

JVM性能调优 JVM性能调优-CSDN博客

Tomcat性能优化 文章-阿里云开发者社区-云计算社区-阿里云

面向GC的Java编程 Hesey's Memo

记一次JVM优化过程 http://sunxiang0918.cn/2014/06/27/%E8%AE%B0%E4%B8%80%E6%AC%A1JVM%E4%BC%98%E5%8C%96%E8%BF%87%E7%A8%8B/

Java应用线上问题排查的常用工具和方法 Hesey's Memo

调优历程: 我是怎样将一个系统的性能提高20倍的? 调优历程: 我是怎样将一个系统的性能提高20倍的?

HSF的性能优化 经历400多天打磨,HSF的架构和性能有哪些新突破?

性能测试常见种类与目的

1、负载测试 (Load testing)

目的是发现系统当前的性能瓶颈,负载测试是不断增加系统的负载,直到负载达到阈值——评估系统在预期工作负载下的性能测试。

通常可以定义为一种性能测试,通过模拟不同工作负载确定软件系统性能能力的活动。其采用的方法是通过不断的增加系统压力,来验证系统各项性能指标的变化情况,知道出现“性能拐点”,即某个性能指标出现不满足事先约定的指标阈值。典型的负载测试包括在负载测试过程中确定响应时间吞吐量误码率等。

该方法可以找到系统的处理极限,可以为性能调优提供依据,同时还可以为确定相同容量提供参考。该类方法通常要基于或模拟系统真实运行环境,且选取的典型业务场景也要与实际情况相同或接近

2、压力测试 (Stress testing)

目的是验证系统在极端情况下的可靠性

可以定义为一种性能测试,通过模拟极限负载获得系统所能提供的最大服务级别的活动。通常该类测试的前提是使得系统已处于一种饱和状态,压力测试是指当硬件资源如cpu、内存、磁盘空间等不充足时对软件稳定性的检查。比如CPU利用率已达到85%以上,内存利用率已超过70%等等。在此前提下再继续给系统增大负载,观察系统的性能表现,是否出现拒绝服务、系统宕机等严重的异常。

这种测试一般辅助于系统故障定位、考察系统的稳定性等工作。

3、并发测试 (Concurrent testing)

通常情况说的性能测试就是这里的并发测试。目的是发现代码中数据结构,算法或者数据库脚本中存在的问题

并发测试通常分为广义的并发和狭义的并发。其中广义的并发可以理解为多个用户同时操作不同的功能,而狭义的并发可以理解为多个用户同时操作同一个功能。通常用于验证系统处理死锁、资源争用的能力。因此,通常伴随着负载和压力测试同时开展。当然,也有单独对某个特殊的功能进行并发测试。

4、疲劳测试 (Fatigue testing)

目的是验证系统长时间运行的稳定性,例如可以测试系统是否存在内存泄露等

疲劳测试一般用于考察系统的稳定、可靠性。因此,可以定义为一种性能测试,在某一特定环境下,通过模拟一定数量的用户持续较长时间连续使用或访问系统,确定系统长时间运行稳定性的活动。根据经验,它一般与压力测试配合进行,综合验证系统在一定压力下,长时间运行的稳定情况

  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kingairy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值