我们正在开发一个网络应用程序,它必须能够承受大量的负载。我在 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/