zoukankan      html  css  js  c++  java
  • 性能缺陷分析及定位方法

    性能测试缺陷

    一般有以下两种情况:

    • 不能满足既定的性能指标,如:响应时间、资源耗用等;
    • 并发错误、死锁、内存泄漏

    性能缺陷分类

    资源忙不来

    资源怠工

    性能缺陷分析

    从下到上剥洋葱的方法,逆向请求分析。

    从硬件——操作系统——数据库——中间件——后端应用程序——前端应用程序

    实例1

    银行应用系统:linux服务器,语言:java,应用服务器:weblogic,数据库:oracle,为了加强安全和稳定增加了流量控制功能(当请求量突然大量爆发,流量控制最大的并发流量,拦截其他流量)。

    测试策略:

    • 基本测试。1个用户循环压测5分钟(获得系统在无压力下的基准信息如:响应时间,为后续拐点做对比)
    • 负载测试。10个并发用户单交易的并发测试,验证是否会有并发错误,如:应用锁、数据库锁等
    • 容量测试。多个交易按照一定的比例去配比,在按一定的梯度逐步施压,一直到性能测试结果的拐点,如:响应时间边长、资源占用很大等。
    • 稳定性测试。一定的压力长时间运行,是否存在内存泄漏、数据库是否存在问题、变慢等。‘

    执行结果:

    容量测试:第一梯度10个用户,响应时间:100ms;第二梯度20个用户,性能缺陷:响应时间出现线性增长为150~200ms。

    bug定位步骤:

    • 网络是否有延迟;ping,查看网卡流量(结果:正常)
    • 操作系统:应用服务器、数据库服务器资源耗用:cpu10%,内存也小,(结果:正常)
    • 网络I/O、磁盘I/O:很小(结果:正常)

    bug定位结果:

    所以问题确定为:系统怠工。证明应用有什么地方有排队现象,类似的现象:高速收费处堵车,但收费处之后的路况却很好,几乎没有车。

    bug定位原因:

    排队现象可能存在于:

    • 网络:请求很多,网络连接达不到;
    • 应用服务器:高并发多线程会导致死锁户线程锁;
    • 数据库:多个请求也会产生死锁现象。

    bug原因定位:

    1. 数据库是否锁:oracle有aw2报告分析oracle运行现状,是否有等待现象。结果:正常
    2. weblogic:控制台和应用日志是否有deadlock、lock、wait现象。结果:正常
    3. 前端:查看连接数是否正常,connection数量是否正常,结果:发现connection数量特别少,实际请求可能过万了,确认问题存在于前端请求阻塞。应该是触发了留空了。但实际上留空是关掉的,可是现象却实际表明是留空触发了,结果:重启应用服务器和数据库服务器后,问题消失了,大约是留空文件写完后,未重启两个服务器导致留空文件未生效吧,真是醉了【眼睛看到的,未必是真实的 哈哈】

    《参考:光荣之路公众号》

     
     
     
  • 相关阅读:
    驰骋工作流引擎-系统变量的引用
    驰骋工作流引擎-表单样本展示
    驰骋工作流引擎CCFLOW下载代码
    初识CSS
    初识HTML标签
    初识JDBC
    通过锁对象解决哲学家就餐问题
    MySQL基本用法
    LRU算法实现,HashMap与LinkedHashMap源码的部分总结
    Java简易实现记事本的打开与保存
  • 原文地址:https://www.cnblogs.com/jxba/p/9157621.html
Copyright © 2011-2022 走看看