java - 在对网站进行负载测试时我应该忽略 Java 脚本吗?

标签 java javascript jsp load-testing stress-testing

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

在一种情况下,我将负载测试程序配置为仅使用一个线程尽可能多地访问我的索引页。索引页大约 60KB,由大约 10 个 ajax 调用、大量 JavaScript 和 jQuery 代码、所需的 CSS 等组成。 我得到的结果是,嗯,令人失望。

完整的index.jsp页面:

  • 吞吐量(请求/秒):3.567
  • 响应时间(秒):0.278

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

  • 吞吐量(请求/秒):6.082
  • 响应时间(秒):0.161

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

  • 吞吐量(请求/秒):20.787
  • 响应时间(秒):0.046

哇,这是一个突破!现在我将一些JavaScript代码添加到index.html页面

  • 吞吐量(请求/秒):9.617
  • 响应时间(秒):0.103

嗯,我想瓶颈已经找到了,Java Script 代码。我需要找出“服务器”可以处理多少个请求/秒,并且由于 java 脚本是在客户端运行的,所以我认为我不应该将其包含在这个测试中。那么负载测试工具应该处理JS代码吗? (他们似乎正在这样做)

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

顺便说一句,Web应用程序是使用Java+Struts2+JSP+Hibernate+MySQL构建的。它还使用 haproxy 分布在多个服务器上。但上述测试是在单个服务器上运行的。

最佳答案

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

但是,如果您尝试测试用户体验,那么 JS 也是其中的一部分,因此您需要考虑到这一点。从您的描述来看,您并不担心用户体验,而是担心服务器的负载。

您可能需要考虑设置 JMeter 以直接调用页面的各个部分,如上面第一句所述。

关于java - 在对网站进行负载测试时我应该忽略 Java 脚本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13331032/

相关文章:

java - 如何在 servlet 内将文本表单数据从 jsp 转换为日期?

java - 枚举是否可以为其每个常量都有一个构造函数

java - 解析此配置文件的最佳方法是什么?

java - SeekBar - 无法设置起点

java - HTML 样式代码在 JSP 文件中不起作用

javascript - 如何使用 <c :forEach> in scripts tag on JSP page?

java - 为什么 DistributedCache 会破坏我的文件名

javascript - 删除内容后如何保持 flex 元素的宽度?

javascript - 如何从 math.floor 中获取重复的数字?

javascript - 如果指定为 `@ViewChildren` 的读取参数,ViewContainerRef 会引用哪些组件 View