Назад | Перейти на главную страницу

Низкая загрузка ЦП в IIS без конкуренции за ресурсы

У меня запущено приложение ASP.NET на IIS7.5 с участием .NET4. В определенное время я получаю так много запросов от клиентов (около 10000 за две минуты) и требуется около 20 минут, чтобы все они были готовы. Я не понимаю, почему загрузка процессора не превышает 20% в этот период. Я подумал о следующем списке причин.

  1. Использование БД: Моя БД мала (около 40 МБ), а использование памяти моим сервером менее 60%, поэтому попадание в кеш БД составляет 100%.
  2. Вызов внешней службы: В моем сервисе ничего подобного нет.
  3. Использование замков: Я не использовал в своем сервисе ни блокировки БД, ни какие-либо семафоры.
  4. Низкое количество одновременно выполняемых запросов: Монитор производительности показывает, что все входящие запросы переходят в состояние выполнения, а очередь ожидания в это время пуста.

Каковы еще возможные причины низкой загрузки ЦП такой системы?

Наконец я нашел решение этой проблемы. Я настроил свой сервер как веб-сад (увеличил количество рабочих процессов до 5), а загрузка ЦП увеличилась до 47%. Тем не менее, я не уверен, почему, но я твердо предполагаю, что большое количество запросов к БД выполняет некоторый ресурс, который ограничен процессом, и увеличение количества рабочих процессов может решить эту проблему.

ОБНОВИТЬ

Я наконец нашел причину! В конфигурации ServiceBehavior моей службы у меня был InstanceContextMode.Single, в то время как значение ConcurrencyMode по умолчанию также равно Single. Я изменил последнее на несколько, и теперь все в порядке.