Я запускаю API в движке приложения. Иногда на выполнение запроса уходит всего ~ 50 мс, а иногда на 10-15 секунд!
Вот как это выглядит в консоли Google Chrome:
Как видите, некоторые запросы очень быстрые, а некоторые очень медленные.
Используя StackDrive Trace, я могу подтвердить, что иногда API занимает 10 или более секунд. Я пытался автоматически отправлять запросы каждую секунду, чтобы увидеть, ускоряется ли он после первого запроса, но он все еще кажется случайным.
Итак, следующее, что я попробовал, это измерение медленного API из-за моего собственного кода. Я проверил это, но это кажется очень быстрым, а не причиной проблемы. Также я не делаю никаких запросов внутри моего API, которые могли бы его замедлять (кроме запроса к базе данных).
Я все еще пытаюсь выяснить, что именно вызывает эту массовуюзадержка, но похоже, что это происходит между запросом, сделанным на внешнем интерфейсе, и запросом, полученным на внутреннем.
Я был бы очень признателен за любую помощь и предложения!
РЕДАКТИРОВАТЬ 1
Похоже, 204 Нет содержимого ответы также иногда медленные.
Вот более странное поведение. На веб-интерфейсе я делаю несколько запросов одновременно, чтобы загрузить страницу. Для каждого запроса почти ровно одна секунда задержки:
Я все ещеЯ даже не выяснил причину этой проблемы, помощь по-прежнему ценится.
РЕДАКТИРОВАТЬ 2
Моя временная шкала, кажется, не ломается, как это происходит дляАлекс:
Я попытался добавить это ко всем заголовкам 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