【问题标题】:Java - first http request to specific host significantly slowerJava - 对特定主机的第一个 http 请求明显变慢
【发布时间】:2013-04-02 14:26:43
【问题描述】:

我正在编写一个针对 Web 应用程序运行的基准测试工具。我面临的问题是对服务器的第一个请求总是比后续请求花费更长的时间。 我在使用 apache http 客户端 3.x、4.x 和 Google http client 时遇到过这个问题。 apache http 客户端 4.x 显示出最大的不同(第一个请求大约比后续请求长 7 倍。对于 Google 和 3.x 大约长 3 倍。

我的工具必须能够用线程对并发请求进行基准测试。我不能使用一个实例,例如HttpClient 并从所有线程调用它,因为这会引发并发异常。因此,我必须在每个线程中使用一个单独的实例,它只会执行一个请求。这会极大地改变整体结果。

我不明白这种行为。我不认为这是由于服务器上的缓存机制造成的,因为 a) 所考虑的 web 应用程序没有使用任何缓存(据我所知)b) 这种效果在第一次请求 www.hostxy.com 时也是可见的,之后www.hostxy.com/my/webapp。

我分别在调用 client.execute(get)get.execute() 之前和之后使用 System.nanoTime()。

有人知道这种行为的根源吗?这些httpclients自己做缓存吗?我将非常感谢任何提示。

【问题讨论】:

    标签: java benchmarking apache-httpclient-4.x apache-httpcomponents


    【解决方案1】:

    阅读此内容:http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html 用于连接池。

    您的第一个连接可能花费的时间最长,因为它是一个 Connect: keep-alive 连接,因此一旦建立,后续连接可以重用该连接。这只是猜测

    【讨论】:

    • 我尝试禁用keep-alive,但不确定是否成功。尽管如此,差异也会发生,如果我在后续请求之间等待 25 秒 - 保持活动超时应该发生在这个时间,不应该吗?我也不明白为什么 apache http 客户端 4.x 花费的时间比 3.x 长很多
    • 嗯。如果我是你,我会抽出 Wireshark 并检查电线上发生了什么。另外,请阅读 HttpClient 的 PoolingClientConnectionManager。这可能会让您了解如何完全避免这个问题
    【解决方案2】:

    您是在服务器启动后第一次访问 JSP 吗?如果服务器在每次启动时刷新它的工作目录,那么第一次点击 JSP 编译并且需要很长时间。

    同样在第一个事务上完成:如果事务使用 ca cert trust store,它将被加载和缓存。

    【讨论】:

      【解决方案3】:

      您最好先了解一下有关缓存的内容 http://hc.apache.org/httpcomponents-client-ga/tutorial/html/caching.html

      【讨论】:

        【解决方案4】:

        如果你的问题是“对特定主机的第一次http请求明显变慢”,那么这个症状的原因可能是在服务器上,而你关心的是客户端。

        如果您调用的“特定主机”是 Google App Engine 应用程序(或任何其他云平台),那么第一次调用该应用程序会让您多等一会儿是正常的。这是因为 Google 在不活动时将其置于休眠状态。

        在最近一次调用之后(通常需要更长的响应时间),后续调用的响应速度更快,因为服务器实例都处于唤醒状态。

        看看这个: Google App Engine Application Extremely slow

        希望对你有帮助,祝你好运!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-28
          • 2015-06-16
          • 2018-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多