2014-10-27 5 views
0

У меня есть странная проблема в среде предварительного производства.Высокое время отклика от веб-API после 5 минут бездействия

У меня есть веб-сайт, который выполняет некоторые операции на веб-Api, размещенном на другом сервере.

Обычно для получения конкретного почтового запроса требуется не более секунды, но после 5 минут бездействия один и тот же почтовый запрос займет 10-30 секунд. (В соответствии с закладкой google chrome)

Указанный почтовый запрос не является первым запросом в списке выполненных запросов.

Запрос выполнен с использованием Ajax.

У меня есть профайлер SQL, чтобы проверить, выполняются ли запросы базы данных медленно, но все они выполняются отлично, и похоже, что запрос POST просто возвращается с задержкой.

У вас есть идеи, почему это происходит?

+0

Я предполагаю, что вы имеете в виду время отклика? Запрос должен быть отправлен довольно быстро. Скорее всего, это проблема с вашим веб-API, связанная с возможностью аутентификации/кэширования. Трудно сказать, не зная системы. – Ngz

ответ

0

Проблема решена!

Проблема заключалась в том, что по электронной почте было отправлено сообщение с использованием SMTPClient в запросе.

В веб-приложении клиент smtp не является асинхронным, поэтому его необходимо отправить перед возвратом запроса POST.

Что делает его асинхронным используя ответ от TheCodeKing в этом вопросе: How do I avoid a delay when sending email from my application?

решить эту проблему!

1

Очень вероятная причина компиляции на уровне базы данных. При первом запуске запроса с большинством движков баз данных sql должен быть скомпилирован и разработан план выполнения. Затем это кэшируется некоторое время. Когда он больше не кэшируется, это нужно сделать снова. Чем длиннее ваша строка sql, тем дольше она требуется для компиляции.

Решение заключается в использовании хранимой процедуры. Как только он запускается после его компиляции, и план выполнения всегда доступен.

+0

Спасибо за ответ Дэн. Однако, когда я смотрю на профилировщик, похоже, что все запросы к базе данных запускаются, а затем ничего не происходит через 10-30 секунд. –

Смежные вопросы