У меня есть приложение, работающее на экземпляре Hyper V 2008 R2 (2 ГБ памяти). Приложение работает на asp.net mvc 3.0 и .Net 4.0.
Это внутреннее приложение с низким трафиком (1-2 запроса в секунду).
Мы наблюдаем вызывающее тревогу количество замедлений работы приложений, и мы не можем указать причину.
Это скриншот зависшего соединения (время более 60 секунд) в RequestAcquireState:
Сервер представляет собой новую установку IIS7 и Windows Server 2008 (всего 10 дней назад) и единственное веб-приложение на виртуальной машине. Мы также используем MSMQ в пуле приложений, чтобы приложение могло транслировать сообщения в очередь.
5 тонких клиентов используют NComputing терминал, подключенный к одному компьютеру, который обращается к веб-приложению.
Я думаю, вы, вероятно, захотите перенести это в StackOverflow для более глубокого погружения - я почти уверен, что любой ответ, который вы получите, потребует либо настройки лимитов дросселирования в файле web / machine.config, либо повторной разработки кода приложения.
Просматривая обрабатываемые запросы, я замечаю, что все они поступают от очень небольшого количества клиентских IP-адресов; Известно, что некоторые компоненты сериализуют доступ с одного и того же IP-адреса (или к одному и тому же сеансу - это один и тот же пользователь с открытыми подключениями?).
Если это не просто медлительность после перезапуска, и общий анализ производительности хоста и, в частности, конфликтов ввода-вывода (эпическая дисковая очередь?) Не решает ее, я не уверен, что есть настройка уровня IIS, которая будет Исправить это. (если только на свежем не случится).
Самый простой способ решить эту проблему: получить дамп процесса в диспетчере задач, затем отладить его с помощью PSSCOR2, попытаться выяснить, чего ждут все официанты, и есть ли там неприятный маленький «maxSomethings = 2». Или жадный обработчик исключений, который не очищает, что снова возвращает нас на территорию SO.