性能缺陷分析及定位方法
Posted jxba
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能缺陷分析及定位方法相关的知识,希望对你有一定的参考价值。
性能测试缺陷
一般有以下两种情况:
- 不能满足既定的性能指标,如:响应时间、资源耗用等;
- 并发错误、死锁、内存泄漏
性能缺陷分类
资源忙不来
资源怠工
性能缺陷分析
从下到上剥洋葱的方法,逆向请求分析。
从硬件——操作系统——数据库——中间件——后端应用程序——前端应用程序
实例1
银行应用系统:linux服务器,语言:java,应用服务器:weblogic,数据库:oracle,为了加强安全和稳定增加了流量控制功能(当请求量突然大量爆发,流量控制最大的并发流量,拦截其他流量)。
测试策略:
- 基本测试。1个用户循环压测5分钟(获得系统在无压力下的基准信息如:响应时间,为后续拐点做对比)
- 负载测试。10个并发用户单交易的并发测试,验证是否会有并发错误,如:应用锁、数据库锁等
- 容量测试。多个交易按照一定的比例去配比,在按一定的梯度逐步施压,一直到性能测试结果的拐点,如:响应时间边长、资源占用很大等。
- 稳定性测试。一定的压力长时间运行,是否存在内存泄漏、数据库是否存在问题、变慢等。‘
执行结果:
容量测试:第一梯度10个用户,响应时间:100ms;第二梯度20个用户,性能缺陷:响应时间出现线性增长为150~200ms。
bug定位步骤:
- 网络是否有延迟;ping,查看网卡流量(结果:正常)
- 操作系统:应用服务器、数据库服务器资源耗用:cpu10%,内存也小,(结果:正常)
- 网络I/O、磁盘I/O:很小(结果:正常)
bug定位结果:
所以问题确定为:系统怠工。证明应用有什么地方有排队现象,类似的现象:高速收费处堵车,但收费处之后的路况却很好,几乎没有车。
bug定位原因:
排队现象可能存在于:
- 网络:请求很多,网络连接达不到;
- 应用服务器:高并发多线程会导致死锁户线程锁;
- 数据库:多个请求也会产生死锁现象。
bug原因定位:
- 数据库是否锁:oracle有aw2报告分析oracle运行现状,是否有等待现象。结果:正常
- weblogic:控制台和应用日志是否有deadlock、lock、wait现象。结果:正常
- 前端:查看连接数是否正常,connection数量是否正常,结果:发现connection数量特别少,实际请求可能过万了,确认问题存在于前端请求阻塞。应该是触发了留空了。但实际上留空是关掉的,可是现象却实际表明是留空触发了,结果:重启应用服务器和数据库服务器后,问题消失了,大约是留空文件写完后,未重启两个服务器导致留空文件未生效吧,真是醉了【眼睛看到的,未必是真实的 哈哈】
《参考:光荣之路公众号》
以上是关于性能缺陷分析及定位方法的主要内容,如果未能解决你的问题,请参考以下文章