Я унаследовал довольно сложную систему (и проблему), с которой мне нужна помощь.
У меня есть веб-сервер со следующими характеристиками:
- Оборудование:
- Server 2003 32-разрядный
- IIS 6
- 8 ядер (16 Вт с гиперпоточностью)
- 12 ГБ ОЗУ
- ASP.NET site
- 3 пула приложений, так что 3 экземпляра w3wp.exe работают.
Эта система обслуживает большое количество людей, и пропускная способность в рабочие часы довольно постоянна и достигает ~ 68 000 Кбит/ s
Бывают моменты, когда система «выходит из строя» - сайт работает очень медленно, что вызывает много телефонных звонков.Вещи обычно замедляются в течение 60 секунд, но значительно различаются по продолжительности.Иногда всего несколько секунд, а иногда 3 минуты и более.
У меня установлены пулы приложений, которые перерабатывают где-то около 600 МБ используемой памяти.Это не точно, но они перерабатывают самостоятельно с большим успехом.Иногда я вручную перезаписываю «основной» пул, чтобы очистить описываемую проблему.
Это то, что, как я знаю, происходит, когда дела идут медленно.
- Пропускная способность сети значительно падает.
- Запросы в очереди в счетчиках производительности ASP.NET увеличиваются.
В тандеме с увеличением числа задержанных страниц в очереди запросов.(Я использую простую страницу ASP, которая выполняет SQL-вызов и просто говорит «Система работает» - эта страница контролируется на задержку)
Общее использование ЦП увеличивается.
- Общее потребление памяти w3wp.exe возрастает.
В моем сознании происходит то, что, по-моему, происходит.
Кто-то просит систему сгенерировать отчет или набор данных.Это раскручивает процесс, который потребляет большое количество потоков (т. Е. Все доступные потоки). Это заставляет все другие запросы к системе ждать в пуле очередей ASP.NET, который по существу убивает сайт.Отсутствие активности приводит к падению сетевого трафика.
Я прочитал много статей об очередях потоков, пулах потоков и т. Д. Это хороший пример: http://williablog.net/williablog/post/2008/12/02/Increase-ASPNET-Scalability-Instantly.aspx, и я думаю, это подсказка, которая поможет мне решить мою проблему ... ноЯ не уверен.Мой файл "Machine.config" для версии asp.net, которую я использую, не указывает ни одно из значений потоков, перечисленных в статье, поэтому мы используем значение по умолчанию для всего, что, по моему мнению, неверно, учитывая нашу ситуацию.
Если бы вы были мной;Каковы Ваши дальнейшие действия?Как вы думаете, где проблема?
edit: вот скриншот.Это должно быть очевидно, когда проблема происходит.http://i.imgur.com/5BJlq.png
edit:
Я хочу изменить эти значения для нашей настройки.Сначала несколько вопросов:
1) После внесения изменений, что нужно перезапустить, чтобы они вступили в силу?
2) Как эти настройки выглядят для системы с 8 физическими ядрами?
maxconnection = 96
maxIoThreads = 100
maxWorkerThreads = 100
minFreeThreads = 704
minLocalRequestFreeThreads = 608