У нас есть ванильное приложение ASP.NET (веб-формы ASP.NET, Entity Framework, SQL Server 2005) без какой-либо явной многопоточности из кода.Он был развернут в промежуточной среде (ОС - Windows Server 2008 R2 64-битная, ЦП - Intel Xeon E5507 @ 2,27 ГГц, 2,34 ГГц, ОЗУ - 7,5 ГБ).Эта среда состоит из сети, базы данных и сервера отчетов, каждый из которых является отдельным экземпляром в облаке (Amazon EC2).При тестировании на параллелизм наблюдения выглядят так:
1 пользователь - загрузка ЦП ~ 25%, время отклика 2-4 секунды
2 пользователя - загрузка ЦП 40-50%,Время отклика 3-6 секунд
4 пользователя - загрузка ЦП 60-80%, время отклика 4-8 секунд
8 пользователей - загрузка ЦП 80-100%, время отклика 4-10 секунд
Мои вопросы:
Является ли загрузка ЦП относительно нет.одновременных пользователей?И время отклика может сильно варьироваться, как видно из приведенных выше наблюдений?
Как видно из приведенных выше наблюдений, ЦП будет максимально увеличен, когда число одновременных пользователей составляет ~ 10.Разве ЦП не должен обрабатывать гораздо больше одновременно работающих пользователей при достаточно резком увеличении времени отклика?В идеальном случае, в случае базового приложения ASP.NET, сколько одновременных пользователей может обрабатывать ЦП?
Если да в вышеуказанном вопросе, в чем может быть проблема для высокогоЦП / длительное время отклика?Какими путями нам следует воспользоваться для эффективной отладки, чтобы обнаружить узкие места в настройках кода / IIS?
PS: настройки IIS (т. Е. В machine.config), которые были изменены:
maxWorkerThreads = 100
MinWorkerThreads = 50
maxIOThreads = 100
minIOThreads = 50
minFreeThreads = 176
maxConnections = 100