无法在Jetty服务器上下载大文件

时间:2015-05-06 12:34:49

标签: download timeout jetty jetty-9

我使用Jetty 9服务器进行了一些测试下载,在那里可以多次下载大小为80 MB的单个文件。当下载次数较少且下载次数达到55秒时,通常都会结束,但如果55秒后正在进行任何下载,则网络流量只需下载而不再存在。

我试过已经设置了超时和缓冲区Jetty,虽然这没有用。有没有人有这个问题或有任何建议如何解决? IIS和Apache Server上的测试工作得很好。使用JMeter进行测试。

2 个答案:

答案 0 :(得分:1)

马库斯,也许你刚刚遇到Jetty bug 472621

编辑:提到的错误是Jetty中的单独超时,适用于总操作,而不仅仅是空闲时间。因此,通过设置http.timeout属性,您基本上可以定义允许下载的最长时间,这反过来可能会导致慢速客户端和/或大量下载的超时错误。

干杯, MOMO

答案 1 :(得分:-1)

超时意味着您的客户阅读速度不够快。

JMeter没有足够快地读取响应数据,因此连接空闲时间足够长,以至于空闲超时并断开连接。

我们定期测试800MB和2GB文件。

使用HTTP / 1.0,HTTP / 1.1和HTTP / 2协议。

使用普通(纯文本)连接和受保护的TLS连接。

响应以我们能想到的(包括压缩,gzip,chunked,ranged等)的Transfer-Encodings和Content-Encodings的形式传递。

我们使用自己的测试基础架构进行所有这些测试,通常会启动许多Amazon EC2节点来执行负载测试,以充分测试服务器需求(典型的测试是20个客户端节点到1个服务器节点)

在测试大型响应时,您需要了解协议(HTTP / 1.x与HTTP / 2)以及该协议的持久性行为如何改变请求/响应延迟。在现实世界中,您不会通过HTTP / 1在相同的持久连接上相互跟随多个大请求(在HTTP / 2上,多个请求将是并行的并且同时发送)。

确保将JMeter设置为使用HTTP / 1.1而不使用持久连接。 (有关帮助,请参阅JMeter文档)

另外要注意你的测试带宽,当测试本身设置不当并且期望远远超过网络本身的带宽时,很常见的是责备服务器(任何服务器)执行速度不够快。

接下来,不要使用同一台机器进行测试,这种负载测试需要多台机器(服务器为1台,客户机为4台)

最后,在进行负载测试时,您需要密切了解服务器(以及较小程度上的客户端测试计算机)上的网络配置,以最大限度地提高网络配置以实现高负载。 OS的默认配置很少足以处理正确的负载测试。