Медленный первый вызов REST на сервере Apache

Я столкнулся с этой проблемой по некоторым запросам. Все первые вызовы пользователя (или по прошествии некоторого времени) занимают до 60 секунд. После этого проходят миллисекунды. Неважно, вызываю ли я его в интернет-браузере или с помощью пользовательского интерфейса SOAP, он всегда один и тот же. Я запускаю Java-приложение на Apache. Я запустил его со скрипачом, чтобы увидеть, где вызов тратит больше всего времени, и похоже, что это между тем, когда сервер получает запрос, и он запускает ответ, каждый раз, когда это занимает 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 Network Analysis

Спасибо !!

0
задан 23 May 2018 в 02:36
1 ответ

Я наконец нашел первопричину. Похоже, Windows закрывает соединение LDAP через 15 минут, но поведение Apache по умолчанию, похоже, пытается повторно использовать соединение на неопределенный срок. Если Apache пытается повторно использовать его после того, как Windows закрыла соединение, возникает 60-секундная задержка ожидания соединения до истечения времени ожидания. Вот почему эта 60-секундная задержка происходит каждые 15 минут.

Многие форумы сообщают, что снижение LDAPConnectionPoolTTL до значения ниже MaxConnIdleTime в конфигурации Apache решило их проблемы, но единственное, что сработало для меня, - это установить его на 0, отключив при все повторное использование существующих подключений.

Вот сообщение, которое приведет меня к ответу: https://serverfault.com/a/825869/470949

0
ответ дан 5 December 2019 в 06:01

Теги

Похожие вопросы