ajax(阿贾克斯)的技术应用在性能测试中适用情况初步分析
现在目前大家均在流行ajax的技术,那么在大规模互联网应用是不是适合
这几天做了关于ajax的性能测试,发现在使用应用时,每一次操作均会向服务器提交请求,关于这一点,我有一些看法:
下面是我做的一个简单的测试对比,在网站上发布信息
测试的应用流程如下(发布offer信息),我用http sniffer跟踪的结果(红色是使用ajax受影响的部分):
没有使用ajax的大致服务器流程:
1.打开发布页面
2取所有的省份、类目信息(大小为0.6M)
3用户填写
4提交
使用ajax服务器请求流程
1 打开发布页面
2 取部分默认省分,类目信息(大约为0.2M),默认省假设为江苏,默认类目为IT
3 用户填写
4 修改省分为其它时,发生一次服务器提交(大小为0.2M),在中国大约是31/32用户会改变
5 然后用户又修改类目,发生一次提交(大小为0.2M),也是必然发生的动作
6 最终写完提交
从分析的结果来看,本来一次连接,分成了三次,有可能别人会说,第二次,第三次是不一定发生的,但从了解的情况来看,后面二次是必需的
从最终的结果来看:流量并没有减少,反而在后面用户增加了两次提交等待,同时cpu增加了负担,假设原有pv为8W,结果使用ajax反而增加了24W,对服务器增大了压力,而目前我们的网络流程与服务器处理能力相比,服务器处理能力更紧张,所以出现发布上去之后会变慢,或取不到(当然有另一部分原因,是内存泄漏,测试结果30分钟后会出现内存出错),对比测试的结果也表明ajax会增加服务器请求的处理数量
所以从性能的角度来说,我建议大家在使用ajaxj时选取那种在处理流程中,第二步,第三步,用户是少量的,不确定的场景,不是100%发生的场景