背景说明
手机应用越来越广,其中使用手机浏览互联网是需求量较大的一类。手机浏览器因为手机资源的限制,处理能力还达不到PC版本,因此一些大的网站会有移动互联网专门的页面。而大部分网站只提供html代码的页面。为了可以在手机上也能够方便地看到网站,提供了一个从html代码到xhtml代码转换的系统,帮助手机用户浏览互联网资源。本次测试就是针对其中一个子系统进行性能优化测试。
测试目的
无线页面转换系统的抓取子系统,可以简单的描述为2个程序,一个类似于调度功能的程序(简称为sf),完成接收上游模块下发的抓取具体url任务,将该真正抓取任务下发给下游模块(简称bc),sf程序还要提取url对应html代码中的外链(比如图片、css等),发起二次抓取。bc程序主要功能就是实际抓取页面,抓取任务来源由sf模块下发。上线之后,随着业务量的增加,抓取子系统不能满足线上的要求。但不能确定性能瓶颈是在sf,还是bc。这次测试目的就要对比出性能瓶颈是在sf还是在bc,如果在bc,还需要定位一下具体的问题。
测试指标
性能测试指标的确定是和测试目的相关的,针对本次测试目的,是为了对比sf和bc的性能,并找出可能存在性能差的原因。
对比性能差,哪个指标最能代表这两个程序的性能值呢?线上给人的感官是速度慢,也就是抓取速度慢,代表抓取速度的指标是每秒抓取网页数量。本次关注指标就是每秒抓取网页数量。为了消除页面大小对结果的干扰,测试用的页面大小取线上平均页面大小。
测试分析
定位性能差的位置:
页面cache:线上使用2层cache策略,但该cache使用3层会更有效。cache使用方式可能会是导致性能差原因。作为本次测试关注点。
配置项:长短连接、词表、线程数等,和线上保持一致。这个成为性能差的可能性很小,如果是通过一些配置项修改就应该能改善。配置项不作为测试关注点。
处理逻辑:程序在处理抓取流程上存在问题,从而影响性能。但这个太广泛,还无法在进一步细化原因。如果问题定位在这里,则需要另行分析。网络模型的问题,也归到此类。
网络环境:抓取速度也依赖于网络状况,这个在线上不是程序能控制的。本次测试不作为关注点。 与上述影响因素相关的程序处理图如下: