Получение огромной случайной задержки в движке приложения - PullRequest
0 голосов
/ 23 октября 2019

Я запускаю API в движке приложения. Иногда на выполнение запроса уходит всего ~ 50 мс, а иногда на 10-15 секунд!

Вот как это выглядит в консоли Google Chrome:

enter image description here

Как видите, некоторые запросы очень быстрые, а некоторые очень медленные.

Используя StackDrive Trace, я могу подтвердить, что иногда API занимает 10 или более секунд. Я пытался автоматически отправлять запросы каждую секунду, чтобы увидеть, ускоряется ли он после первого запроса, но он все еще кажется случайным.

Итак, следующее, что я попробовал, это измерение медленного API из-за моего собственного кода. Я проверил это, но это кажется очень быстрым, а не причиной проблемы. Также я не делаю никаких запросов внутри моего API, которые могли бы его замедлять (кроме запроса к базе данных).

Я все еще пытаюсь выяснить, что именно вызывает эту массовуюзадержка, но похоже, что это происходит между запросом, сделанным на внешнем интерфейсе, и запросом, полученным на внутреннем.

Я был бы очень признателен за любую помощь и предложения!

РЕДАКТИРОВАТЬ 1

Похоже, 204 Нет содержимого ответы также иногда медленные. enter image description here

Вот более странное поведение. На веб-интерфейсе я делаю несколько запросов одновременно, чтобы загрузить страницу. Для каждого запроса почти ровно одна секунда задержки:

enter image description here

enter image description here

Я все ещеЯ даже не выяснил причину этой проблемы, помощь по-прежнему ценится.

РЕДАКТИРОВАТЬ 2

Моя временная шкала, кажется, не ломается, как это происходит дляАлекс:

enter image description here

Я попытался добавить это ко всем заголовкам http:

'Cache-Control': 'no-cache',
Pragma: 'no-cache'

К сожалению, это тоже не решает мою проблему.

РЕДАКТИРОВАТЬ 3

Задержка в 10 секунд, вероятно, вызвана тем, что одновременно запускаются 10 запросов, каждый из которых занимает 1 секунду.

Итак, мой первый вопрос:

  • Может ли один экземпляр f1 движка приложения не обрабатывать несколько (одновременных) запросов одновременно?

И мой второйвопрос:

  • Почему обработка одного запроса занимает более 1 секунды (иногда более 2 секунд)?

Я провел еще один тест, чтобы выяснить, является ли он моимкод, который замедляет запросы. Я развернул контроллер MVC ядра .net только с одной задачей. Все, что он делает, это возвращает «Hello world». Вот результаты (используя этот метод):

> curl.exe -s -o --url "http://api.---.com/test" -w "@curl-format.txt"

time_namelookup: 0,000001
time_connect: 0,109000
time_appconnect: 0,000000
time_pretransfer: 0,109000
time_redirect: 0,000000
time_starttransfer: 1,203000
--------
time_total: 1,203000

1 Ответ

1 голос
/ 23 октября 2019

В ваших быстрых запросах ответы 204 (без содержимого) и 45 байтов. Медленные запросы отвечают 200 и фактически что-то возвращают.

Есть ли какое-то кэширование, которое влияет на это?

РЕДАКТИРОВАТЬ 1: Поскольку ваш сервер возвращал 204, я больше обращался к любомукеширование, которое вы реализовали на стороне клиента. Я вижу, что вы нашли экран трассировки (https://console.cloud.google.com/traces/traces), вы пытались щелкнуть по одному из них? Это дает вам следующую разбивку:

enter image description here

которая должна указывать вам, где запрос тратит свое время

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...