Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
负载测试网站时是否应该忽略Java脚本?_Java_Javascript_Jsp_Load Testing_Stress Testing - Fatal编程技术网

负载测试网站时是否应该忽略Java脚本?

负载测试网站时是否应该忽略Java脚本?,java,javascript,jsp,load-testing,stress-testing,Java,Javascript,Jsp,Load Testing,Stress Testing,我们正在开发一个web应用程序,它必须能够承受相当大的负载。我正在HP Proliant DL 380服务器上运行测试—两个3.6GHz Xeon CPU,16 Gb内存。。。。我使用ApacheJMeter和pylot来运行负载测试,它们显示了类似的结果 在一个场景中,我将负载测试程序配置为尽可能多地使用一个线程访问我的索引页。索引页面大约为60KB,由大约10个ajax调用、大量JavaScript和jQuery代码、所需的CSS等组成。 我得到的结果是令人失望的 完整index.jsp页面

我们正在开发一个web应用程序,它必须能够承受相当大的负载。我正在HP Proliant DL 380服务器上运行测试—两个3.6GHz Xeon CPU,16 Gb内存。。。。我使用ApacheJMeter和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 哇,这是一个突破!现在我向index.html页面添加了一些JavaScript代码

每秒所需吞吐量:9.617 响应时间秒:0.103 嗯,我想瓶颈已经找到了,Java脚本代码。我需要知道服务器可以处理多少个req/sec,因为java脚本是在客户端运行的,所以我不认为应该在这个测试中包含它。那么负载测试工具应该处理JS代码吗?他们似乎在这样做

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


顺便说一句,webapp是使用Java+Struts2+JSP+Hibernate+MySQL构建的。它还使用haproxy分布在多个服务器上。但是前面提到的测试是在一台服务器上运行的。

如果您要查找的是服务器提供内容的速度的原始数字,那么我会说是的,忽略java脚本,重点是传输页面HTML、图像、脚本文件、CSS等的各种位所需的速度

然而,如果您试图测试用户体验,那么JS就是其中的一部分,所以您需要考虑到这一点。根据您的描述,您并不担心用户体验,而是担心服务器的负载


你可能想考虑设置JMT来直接调用你的页面,如上面的第一句所描述的。

< P>如果你要查找的是原始的服务器有多快的内容,那么我会说是的。忽略java脚本,专注于传输页面HTML、图像、脚本文件、CSS等的各种内容所需的速度

然而,如果您试图测试用户体验,那么JS就是其中的一部分,所以您需要考虑到这一点。根据您的描述,您并不担心用户体验,而是担心服务器的负载


你可能想考虑设置JMT来直接调用你的页面,如上面第一句中所描述的。

< P>是你的JavaScript CSS,直接嵌入在页面上的图像还是从脚本标签加载的?后一种情况将强制浏览器从服务器下载文件,立即将每秒的页面数减半。这是您应该从其他服务器(如Google)加载jquery的原因之一-这会对用户感知的页面加载时间产生轻微影响,需要进行一次额外的DNS查询,但实际上会减轻服务器的负载,这是您的JavaScript CSS,直接嵌入页面或从脚本标签加载的图像?后一种情况将迫使浏览器从服务器下载文件,立即将每秒的页面数减半。这就是您应该从其他服务器(如Google)加载jquery的原因之一-这将对用户感知的页面加载时间产生轻微影响,需要再进行一次DNS查询,但实际上会减轻服务器的负载

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

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

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


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

这一点很好!它们中的一些被嵌入到页面中,一些是从脚本标签加载的。但是在上面的测试中,我在页面中插入了一些自定义JS代码,它将m减半
y req/sec。我看不出执行javascript是如何降低页面速度的——当javascript被下载嵌入页面时,它只是文本——执行是由客户端执行的,不应该影响服务器。我认为正在发生的事情是,您作为客户端使用的机器功能不足以每秒运行超过9.617个javascript,这是您测试过程中的瓶颈。事实上,您的评论是我困境的答案,我测试的机器功能不足以发送巨大的请求!太棒了!它们中的一些被嵌入到页面中,一些是从脚本标签加载的。但是在上面的测试中,我在页面中插入了一些自定义JS代码,它将我的请求/秒减少了一半。我看不出执行javascript会如何降低页面的速度-当下载嵌入页面时,javascript只是文本-执行由客户机执行,不应影响服务器。我认为正在发生的事情是,您作为客户端使用的机器功能不足以每秒运行超过9.617个javascript,这是您测试过程中的瓶颈。事实上,您的评论是我困境的答案,我测试的机器功能不足以发送巨大的请求!关于JS,我同意你们的看法,但我不认为配置JMeter来直接调用页面是个好主意。因为还需要考虑ajax调用、db访问等。其中一个主要瓶颈是应用服务器的cpu,在这种情况下,cpu将被放弃。JMeter可以配置为进行与浏览器相同的ajax调用。我的观点是,如果你想否定JS作为一个因子,那么你需要把它从等式中去掉。最简单的方法是只进行浏览器在正常情况下会进行的正常HTTP、AJAX和WS调用。使用JMeter的优点是,一旦完成了基本测试,就可以轻松地提高音量。我并不是说这是唯一的解决方案,因为我确信有成千上万种方法可以完成同样的壮举。关于JS,我同意你的看法,但我不认为配置JMeter来直接调用页面是个好主意。因为还需要考虑ajax调用、db访问等。其中一个主要瓶颈是应用服务器的cpu,在这种情况下,cpu将被放弃。JMeter可以配置为进行与浏览器相同的ajax调用。我的观点是,如果你想否定JS作为一个因子,那么你需要把它从等式中去掉。最简单的方法是只进行浏览器在正常情况下会进行的正常HTTP、AJAX和WS调用。使用JMeter的优点是,一旦完成了基本测试,就可以轻松地提高音量。我并不是说这是唯一的解决方案,因为我相信有成千上万种方法可以完成同样的壮举。我认为HAProxy做到了这一点,我在一些Tomcat后端前安装了一台HA机器。但正如我所说,为了简单起见,我只在一台机器上运行了测试。HAProxy不缓存,它是一个负载平衡器。通常在HAProxy前面放置一个缓存,如Varnish、Squid或nginx。但是您的应用程序仍然需要允许缓存工作,方法是将可缓存和不可缓存的私有内容分开,并发出适当的http头将其传送到缓存。我认为HAProxy做到了这一点,我在一些Tomcat后端前面安装了一台HA机器。但正如我所说,为了简单起见,我只在一台机器上运行了测试。HAProxy不缓存,它是一个负载平衡器。通常在HAProxy前面放置一个缓存,如Varnish、Squid或nginx。但是您的应用程序仍然需要允许缓存工作,方法是将可缓存和不可缓存的私有内容分开,并发出适当的http头将其与缓存通信。