性能测试缺陷

一般有以下两种情况:

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

性能缺陷分类

资源忙不来

资源怠工

性能缺陷分析

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

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

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

 

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

 
 
 
posted on   jxba  阅读(1343)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示