Эти 25% равны одному ядру, но распределены по всем четырем согласно вкладке производительности диспетчера задач.
Проверка реальности: при использовании одного ядра планировщик ЦПпереместит нагрузку между ядрами до 2008 R2.Начиная с 2008 R2, он будет держать его на одном ядре, чтобы фактически перевести другие ядра в глубокий сон.
Итак, вы видите, что в основном это приложение, использующее одно ядро ЦП.Точка.
Что может вызвать такое поведение?
Либо ваш код, либо ваш запрос (ну, вместе с вашим кодом) убедитесь, что запросы сериализованы ине обрабатывается параллельно.
Во время нагрузочного тестирования ... вы принимаете / сохраняете cookie сеанса (например, ONE), а на странице asp.net у вас включено состояние сеанса?Это будет сериализовать все запросы страниц к одному сеансу в памяти и является одним из наиболее вероятных виновников.Другой делает «глупые» вещи в коде, приводя к результату в блоке, и делает алгоритм эффективно однопоточным - но это невозможно оценить без гораздо большей информации о том, как вы программируете и что эффективно делаете.Например, я видел, как однажды несколько обезьян кодировали интернет-магазин, используя ОДНО соединение с базой данных (чтобы не перегружать базу данных), которое было сохранено в объекте приложения, и используя там методы блокировки / разблокировки, чтобы эффективно превратить их приложение asp в однопоточное.вещь.Это было очевидно - но есть много других вещей, которые могут пойти не так.Вопросы в основном следующие:
- Вы по сценарию конфигурации / тестирования делаете что-то для принудительной сериализации IIS (что может быть в настройках веб-фермерства или при неправильном использовании состояния сеанса)?
- Делаете ли вы что-нибудь на страницах, которые эффективно блокируют их в однопоточном режиме?
IIS per se отвечает на запросы через рабочие элементы (т.е. использует много потоков), если только он не HA для их сериализации (только сеансы)когда-либо назначаются ОДНОМУ потоку за раз, поэтому второй запрос для того же сеанса сериализуется).