前情简述
前几天在一场web应用试验过程中,后端发动了向后端USB的查阅允诺,虽然后端积极响应较快,后端一直处在等候积极响应回到状况。在几秒钟后,忽然网页再度出现让人惊悚片的“噢噢,网页崩盘了”几个小字。
看到这几个字的一刹那,血糖忽然攀升,屁股里嗡地一声冒出一个个小标题:发生了什么事?于是,抱着可能将是“再度出现幻觉”虚幻,再度在后端多次重复了操作方法,结论Rewa依然“噢噢,网页崩盘”。
毕竟,我是长着两颗“混凝土铁颚骨”,肯定得Capendu,搜寻下什么其原因。
故事情节沿袭
早已确认,上述现像是一个“必现”的机械故障。我早已有了自信心能将这个现像递交成一个机械故障交予开发同僚分析而不会被婉拒,但是秉持“节约彼此之间沟通交流时间”和“疑惑焦虑”,我决定展开先期摸查。
1.须建后端USB机械故障
再度促发机械故障,登入后端伺服器查阅USB接受允诺和回到积极响应笔记,辨认出后端机械故障再度出现时,后端仍处在“等候积极响应回到”状况。因此,不可能将是因为后端回到数据太小等其原因造成”网页崩盘”,暂须建后端机械故障!
2.后端异常调查取证
须建后端机械故障后,改投后端机械故障调查取证。虽然比较复杂后端笔记放置,所以选择了常见的应用程序增容模式展开摸查,看看能不能得到想的结论。
打开应用程序增容询问处,转换到“缓存“工具栏(样例如右图右图)。再度多次重复操作方法,促发“网页崩盘”机械故障。过程中忽然注意到,缓存增容询问处的“JS堆总大小不一”稳步增长,然后再度出现“网页崩盘”。
多次重复数次试验,都辨认出“JS堆总大小不一”稳步增长。由此能先期确认,后端缓存外溢,导致网页崩盘。
图1 应用程序缓存增容询问处示意图
那么,如何进一步分析缓存外溢点呢?
如右图2右图,点击“拍摄快照”,应用程序会将当前网页的缓存和缓存一起计算、快照下来。
图2 应用程序缓存快照示意图
如右图3右图,为“www.baidu.com”网页快照结论。从图中能看出后端js文件中每个函数占用的大小不一,以及每个对象的缓存大小不一。
图3 应用程序缓存快照详情
通过该方法,我快速找到了后端js文件中缓存消耗最大的函数和对象。收集好“机械故障表象图(网页崩盘截图)”、“缓存快照截图”,将整个机械故障复现方法和机械故障现像和先期分析结论贴到机械故障描述中,递交予后端开发人员进一步分析。
很快,后端开发人员给予了肯定,的确是后端内部外溢,根本其原因是闭包导致,且很快修复完成。由此能看出,使用应用程序的缓存增容询问处和缓存快照帮助我取得了一场成功的后端机械故障先期分析结论,为开发人员提供了有效的帮助,且节约了大量的沟通交流时间。
大结局
从本文案例中能看出,掌握应用程序增容询问处的使用和分析是一个十分方便且有效的机械故障分析方法,能提升我们试验人员的专业素养,为我们赢得开发同僚的尊重,也能提高研发效率,节约不必要的沟通交流成本。建议大家可以熟练使用和掌握。
彩蛋
有什么想再说说的吗?有一点点。
问:什么是缓存泄漏?什么是缓存外溢?
答:这两个词语经常从开发同僚嘴里听到。
缓存泄漏(Memory Leak)是指程序中已动态分配的堆缓存虽然某种其原因程序未释放或无法释放,造成系统缓存的浪费,导致程序运行速度减慢甚至系统崩盘等严重后果。
缓存外溢(Out Of Memory,简称OOM)是指应用系统中存在无法回收的缓存或使用的缓存过多,最终使得程序运行要用到的缓存大于能提供的最大缓存。此时程序就运行不了,系统会提示缓存外溢,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分缓存又能正常运行该软件,而由系统配置、数据流、用户代码等其原因而导致的内存外溢错误,即使用户重新执行任务依然无法避免。
简单来说,缓存泄漏能理解为程序某个未使用的变量或者方法,长期占用缓存不会释放,导致缓存堆积浪费;缓存外溢能理解为因为某些其原因,程序使用的缓存大于硬件提供的缓存,导致缓存超出了。
问:快照时间太短,网页还在加载快照就结束了?
答:若想分析更长时间的网页缓存变化或占用,推荐使用应用程序增容询问处的“性能”。
问:为何感觉相邻数次相同网页的快照开始时,缓存似乎依然很大?
答:快照会将缓存和缓存一起计算,快照前记得使用如右图表清理网页缓存,这样就能获得更准确的缓存数据啦。
最后:在我的V :atstudy-js,能免费领取一份10G软件试验工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、USB试验工具、试验进阶-Python编程、Web自动化试验、APP自动化试验、USB自动化试验、试验高级持续集成、试验架构开发试验框架、性能试验、安全试验等。