Apache 服务器上的首次 REST 调用速度缓慢

Apache 服务器上的首次 REST 调用速度缓慢

我在一些请求上遇到了这个问题。用户的所有第一次调用(或一段时间后)需要长达 60 秒才能完成。之后需要几毫秒的时间。无论我在互联网浏览器上还是使用 SOAP UI 调用它,结果都是一样的。我在 Apache 上运行一个 Java 应用程序。我用 Fiddler 运行它,以查看调用花费最多时间的地方,看起来它位于服务器收到请求和开始应答之间,每次都需要 61 秒。Fiddler 还显示 SSL 握手在两种情况下都需要几毫秒的时间

我不知道还能去哪里找。如果有人能提供一些信息,我将不胜感激。

第一个请求(耗时 1 分 01 秒)

Request Count:   1
Bytes Sent:      683        (headers:683; body:0)
Bytes Received:  846        (headers:347; body:499)

ACTUAL PERFORMANCE
--------------

This traffic was captured on Friday, May 18, 2018.

ClientConnected:    16:21:17.244
ClientBeginRequest: 16:21:17.465
GotRequestHeaders:  16:21:17.465
ClientDoneRequest:  16:21:17.465
Determine Gateway:  0ms
DNS Lookup:         0ms
TCP/IP Connect: 0ms
HTTPS Handshake:    0ms
ServerConnected:    16:21:17.275
FiddlerBeginRequest:    16:21:17.466
ServerGotRequest:   16:21:17.466
ServerBeginResponse:    16:22:18.597
GotResponseHeaders: 16:22:18.597
ServerDoneResponse: 16:22:18.599
ClientBeginResponse:    16:22:18.599
ClientDoneResponse: 16:22:18.599

    Overall Elapsed:    0:01:01.133

RESPONSE BYTES (by Content-Type)
--------------
application/json: 499
       ~headers~: 347

后续请求(耗时 0.120 分钟)

Request Count:   1
Bytes Sent:      683        (headers:683; body:0)
Bytes Received:  846        (headers:347; body:499)

ACTUAL PERFORMANCE
--------------

This traffic was captured on Friday, May 18, 2018.

ClientConnected:    16:22:38.582
ClientBeginRequest: 16:22:38.607
GotRequestHeaders:  16:22:38.607
ClientDoneRequest:  16:22:38.607
Determine Gateway:  0ms
DNS Lookup:         0ms
TCP/IP Connect: 0ms
HTTPS Handshake:    0ms
ServerConnected:    16:22:38.589
FiddlerBeginRequest:    16:22:38.607
ServerGotRequest:   16:22:38.607
ServerBeginResponse:    16:22:38.726
GotResponseHeaders: 16:22:38.726
ServerDoneResponse: 16:22:38.727
ClientBeginResponse:    16:22:38.727
ClientDoneResponse: 16:22:38.727

    Overall Elapsed:    0:00:00.120

RESPONSE BYTES (by Content-Type)
--------------
application/json: 499
       ~headers~: 347

这是另一个第一次通话的样子浏览器 Chrome 网络分析

谢谢!!

答案1

我终于找到了根本原因。看起来 Windows 会在 15 分钟后关闭 LDAP 连接,但默认的 Apache 行为似乎是尝试无限期地重新使用该连接。如果 Apache 在 Windows 关闭连接后尝试重新使用它,则需要 60 秒的延迟才能等待连接超时。这就是为什么每 15 分钟就会发生一次 60 秒的延迟。

许多论坛报告称,在 Apache 配置中将 LDAPConnectionPoolTTL 降低到低于 MaxConnIdleTime 的值可以解决他们的问题,但对我来说唯一有效的方法是将其设置为 0,从而完全禁用对现有连接的重用。

以下帖子引导我找到了答案: https://serverfault.com/a/825869/470949

相关内容