在加载测试我的网站时,我应该忽略Javascript吗?

时间:2012-11-11 12:16:45

标签: java javascript jsp load-testing stress-testing

我们正在开发一个必须承受显着负载量的Web应用程序。我在HP(Proliant DL 380)服务器(两个3.6GHz Xeon cpus,16 GB RAM,......)上运行测试。我正在使用Apache JMeter和pylot来运行负载测试(它们显示出类似的结果)。

在一个场景中,我将负载测试程序配置为仅使用一个线程来访问我的索引页面,尽可能多。索引页面大约60KB,包含大约10个ajax调用,大量JavaScript和jQuery代码,所需的CSS等。 我得到的结果是令人失望的。

完整的index.jsp页面:

  • 吞吐量(req / sec):3.567
  • 响应时间(秒):0.278

所以我删除了每个ajax调用,删除了图表以及CSS(但不是JS)

  • 吞吐量(req / sec):6.082
  • 响应时间(秒):0.161

还很低!所以我构建了一个HTML格式的静态索引页面,其中包含所有相同大小的数据(没有任何服务器端和客户端计算)

  • 吞吐量(req / sec):20.787
  • 响应时间(秒):0.046
哇,这是一个突破!现在我将一些JavaScript代码添加到index.html页面

  • 吞吐量(req / sec):9.617
  • 响应时间(秒):0.103

好吧,我认为已发现瓶颈,Java脚本代码。我需要找出“服务器”可以处理多少req / sec,并且由于java Script是在客户端运行的,我认为我不应该在此测试中包含它。那么负载测试工具应该处理JS代码吗? (他们似乎这样做)

另一个关键问题是,根据硬件,内容大小和上述配置,这个数量的吞吐量是否合理?我不应该期待更多吗?我的期望是500 req / sec!是添加硬件的唯一解决方案?!

BTW,webapp是使用Java + Struts2 + JSP + Hibernate + MySQL构建的。它也使用haproxy分布在多个服务器上。但上述测试是在一台服务器上运行的。

3 个答案:

答案 0 :(得分:2)

如果您要查找的是服务器提供内容的速度的原始数字,那么我会说是,忽略java脚本并关注传输所有各个位的速度。页面(HTML,图像,脚本文件,CSS等)。

但是,如果您正在尝试测试用户体验,那么JS就是其中的一部分,因此您需要考虑到这一点。根据您的描述,您不必担心用户体验,而是加载到服务器。

您可能需要考虑设置JMeter直接调用您的网页,如上面第一句中所述。

答案 1 :(得分:1)

您的JavaScript(CSS,图片)是直接嵌入页面还是从脚本标记加载?后一种情况将强制浏览器从服务器下载文件,每秒立即减半你的分页数量。这是你应该从另一台服务器(例如谷歌)加载jquery的原因之一 - 这将受到轻微打击在用户感知的页面加载时间(一个额外的DNS查询),但真正从服务器负载

答案 2 :(得分:1)

  

另一个关键问题是,根据硬件,内容大小和上述配置,这个数量的吞吐量是否合理?我不应该期待更多吗?我的期望是500 req / sec!是添加硬件的唯一解决方案?!

编写应用程序以便页面可以缓存,然后在应用程序前放置http代理通常是一个很好的策略。