WebAPI Lifecycle/ Очередь запросов

У меня есть приложение AngularJS, которое вызывает WebAPI. Если я регистрирую время, когда я инициирую запрос (в моем контроллере angluar), и регистрирую время выполнения OnActionExecuting (в фильтре действий в моем контроллере WebAPI), я иногда замечаю промежуток ~ 2 секунды. Я предполагаю, что ничего не работает до этого фильтра, и это связано с тем, что запросы блокируются / ставятся в очередь. Причина, по которой я это предполагаю, заключается в том, что, если я удаляю все другие вызовы данных, я не вижу этого разрыва.

Какое количество параллельных запросов может обрабатывать WebAPI одновременно? Я попытался посмотреть на мониторы производительности ASP.NET, но не смог найти, где я мог бы увидеть эти данные. Может ли кто-нибудь пролить свет на это?

1 ответ

Там нет прямого ответа на это, но самый короткий из них...

Для WebApi нет никаких ограничений: ограничения зависят от того, что может обработать ваш сервер, и от того, насколько эффективен код, который он выполняет.

... Но так как вы спросили, давайте рассмотрим некоторые основные вещи, которые мы можем предположить о нашем сервере и нашем приложении...

  1. одновременные соединения

Типичный сервер известен такими проблемами, как "c10k"... https://en.wikipedia.org/wiki/C10k_problem... так что жестко ограничивается количество одновременных подключений.

Предполагая, что каждый вызов WebApi сделан из, скажем, некоторого вызова AJAX на веб-странице, что дает нам ограничение в 10 000 соединений, прежде чем все станет злым.

2.Зависимости, связанные с накладными расходами

Если затем мы рассмотрим сложность рассматриваемого кода, то у вас могут возникнуть проблемы при выполнении таких вещей, как SQL-запросы, я часто писал контроллеры WebApi, которые имеют бизнес-логику, которая выполняет запросы в 10+ дБ, могут быть проблемы с этим?

  1. Поток в накладных

Как насчет пропускной способности сети для сервера? Давайте предположим, что мы передаем 1 МБ данных для каждого вызова, это не займет много времени, чтобы засорять линию Ethernet 1 Гбит / с сообщениями такого размера.

  1. Обработка накладных расходов

Предполагая, что вы написали API-интерфейс, который выполняет сложные вычисления (например, создание сетки для сложных трехмерных данных), вы можете легко захлестнуть свой процессор на некоторое время при каждом запросе.

  1. Таймауты

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

...

Итак, как вы можете видеть, это далеко не полный список, но он описывает сложность вопроса, который вы задали. Тем не менее, я бы сказал, что WebApi (фреймворк) не имеет ограничений, но на самом деле инфраструктура вокруг него имеет ограничения для определения того, что может быть возможным.

Другие вопросы по тегам