Неоптимальное поведение экземпляра службы приложений QnA Maker после простоя - PullRequest
2 голосов
/ 18 июня 2020

Мы используем службу Microsoft Azure Bot с когнитивной службой QnA Maker для разработки бота QnA для клиента. С точки зрения функциональности бот готов, но мы провели несколько нагрузочных тестов и заметили неожиданное поведение.

При использовании одного экземпляра службы приложений QnA Maker (план S1, всегда включен), если в течение некоторого времени нет запросов, приложение, похоже, go переходит в состояние ожидания, а рабочий набор памяти падает примерно до 30 МБ. Когда новые запросы начинают попадать в конечную точку, повторная инициализация приложения занимает много времени (в КБ 263 пары QnA, некоторые из которых состоят из метаданных, подсказок и альтернативных вопросов).

До получения первого ответа может пройти полторы минуты. В метриках набора рабочей памяти можно увидеть, что приложение загружает в память около 550 МБ за этот период времени и только затем начинает обрабатывать запросы и отправлять ответы. Это могло бы быть терпимо, если бы это было какое-то время разогрева, но это, кажется, происходит каждый раз, когда QnA Maker не получает новые запросы в течение некоторого времени.
Когда это происходит, много начальных запросов от нагрузочного теста (jmeter, BotServiceStressToolkit ) сбой из-за тайм-аута.

Кроме того, даже если мы попытаемся настроить автоматическое масштабирование для увеличения количества экземпляров, каждый из этих экземпляров будет go проходить один и тот же процесс и вызывать сбой новых запросов, отправленных балансировщиком нагрузки, до полной инициализации экземпляра. Конечно, тем временем существующие экземпляры могут иногда выходить из строя, если они перегружены запросами. Конечным результатом этого является около 15% отказов во время нагрузочного теста.
То же самое, если мы установим фиксированное количество экземпляров (ie. 5) - если один из этих простаивающих и затем получает запрос, он снова начать инициализацию и вызвать проблему.

Есть ли какие-либо предложения от сообщества о том, как с этим можно справиться и что может вызвать проблему? Сообщите мне, если потребуются какие-либо дополнительные данные / информация, я буду часто проверять эту проблему и соответствующим образом редактировать вопрос.

...