性能缺陷分析及定位方法

性能测试缺陷

一般有以下两种情况:

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

性能缺陷分类

资源忙不来

资源怠工

性能缺陷分析

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

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

实例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数量特别少,实际请求可能过万了,确认问题存在于前端请求阻塞。应该是触发了留空了。但实际上留空是关掉的,可是现象却实际表明是留空触发了,结果:重启应用服务器和数据库服务器后,问题消失了,大约是留空文件写完后,未重启两个服务器导致留空文件未生效吧,真是醉了【眼睛看到的,未必是真实的 哈哈】

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

 
 
 
原文地址:https://www.cnblogs.com/jxba/p/9157621.html