【问题标题】:It is not possible to download large files at Jetty server无法在 Jetty 服务器上下载大文件
【发布时间】:2015-07-16 14:23:13
【问题描述】:

我使用 Jetty 9 服务器进行了几次测试下载,其中对大约 80 MB 大小的单个文件进行了多次下载。当下载次数较少且未达到55秒的下载时间时,通常全部结束,但如果55秒后有任何下载正在进行,则网络流量仅用于下载而不再存在。

我尝试已经设置了超时和缓冲区 Jetty,尽管这没有奏效。有没有人遇到过这个问题或对如何解决有任何建议? IIS 和 Apache Server 上的测试运行良好。使用 JMeter 进行测试。

【问题讨论】:

    标签: download timeout jetty jetty-9


    【解决方案1】:

    Marcus,也许你只是遇到了 Jetty 错误472621

    编辑:提到的错误是 Jetty 中的一个单独的超时,适用于整个操作,而不仅仅是空闲时间。因此,通过设置 http.timeout 属性,您实际上定义了允许任何下载所花费的最长时间,这反过来可能会导致慢速客户端和/或大型下载的超时错误。

    干杯, 莫莫

    【讨论】:

      【解决方案2】:

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

      JMeter 读取响应数据的速度不够快,因此连接处于空闲状态的时间足够长,以至于空闲超时并断开连接。

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

      关于使用 HTTP/1.0、HTTP/1.1 和 HTTP/2 协议。

      使用普通(明文)连接和安全的 TLS 连接。

      响应以我们能想到的尽可能多的传输编码和内容编码(压缩、gzip、分块、范围等)传递。

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

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

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

      还要注意您的测试带宽,当测试本身设置草率并且期望远远超过网络本身的带宽时,通常会指责服务器(任何服务器)执行速度不够快。

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

      最后,在进行负载测试时,您需要密切了解您的服务器(以及在较小程度上,您的客户端测试机器)上的网络配置,以最大限度地提高您的网络配置以应对高负载。操作系统的默认配置很少足以处理适当的负载测试。

      【讨论】:

      • 我更改了 Jetty start.ini 下面的行,增加了接近 5 分钟的时间,下载已完成。如果问题发生在 30 台设备降低同一文件服务器时,其中大多数设备都停止了。那将是最好的做法吗? ## HTTP 空闲超时,以毫秒为单位 http.timeout=300000
      猜你喜欢
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多