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

Как я могу узнать, почему IIS 6 использует весь мой процессор?

У меня есть несколько веб-приложений ASP.NET, работающих на IIS 6. Сегодня моя загрузка ЦП из IIS очень высока и обычно даже не регистрируется. Как я могу решить эту проблему?

Изменить: я сузил эту проблему до 1 веб-приложения, использующего пулы приложений, как было предложено, у меня запущены procmon и proc explorer, и я вижу, что я могу с этим выяснить ... Это довольно постоянное использование процессора.

Я не могу сказать, что у нас самые последние исправления, к сожалению, я не контролирую это, но у меня есть административные привилегии.

Опять же ... мой любимый рецепт ... загрузите sysinternals и используйте procmon, filemon / regmon, чтобы увидеть, не что-то там забивается. Используйте проводник процессов, чтобы увидеть, есть ли аномальные файлы, открытые из списка дескрипторов открытых файлов.

Что-нибудь отображается в журналах для IIS?

Если это что-то, связанное с обработкой определенного файла или сценария, вы можете получить подсказку от функции обработки открытых файлов в проводнике процессов.

Какой контент обслуживает IIS, когда это происходит?

И, конечно же ... применены последние обновления / пакеты обновлений?

Если у вас есть административный доступ к серверу и доступ к удаленному рабочему столу, вы можете использовать сценарий, который сопоставляет процессы w3wp.exe с пулом приложений IIS 6, которому он принадлежит (пример ниже). Поэтому, если вы обнаружите, что определенный пул приложений использует слишком много оперативной памяти или процессора, вы можете посмотреть, какие приложения работают в этом пуле, и начать их сужать. Мы неоднократно выполняли аналогичные действия по устранению неполадок и в конечном итоге взяли один проблемный пул приложений и разделили 3 приложения в нем на собственные пулы приложений, потому что они вместе вызывали проблемы с памятью. Благодаря этому и оптимизации кода разработчиками проблема была решена. Если ваш веб-сайт выполняет вызовы базы данных, вы также можете проверить соединение между двумя серверами, чтобы убедиться, что у вас не возникают тайм-ауты, вызывающие скачки ЦП.

Я написал пример HTA, который перечислит пулы приложений, как я указал. Вы можете найти эту HTA здесь: http://www.scriptinganswers.com/forum2/forum_posts.asp?TID=3222

у вас несколько веб-сайтов в их собственных пулах приложений?

Я использую debugdiag, который можно бесплатно загрузить с сайта M $. Вы можете заставить его ждать зависания или запускать его по запросу. Затем вы можете проанализировать дамп с помощью соответствующего инструмента или использовать winDBG.

http://blogs.msdn.com/tess/ отличный блог по диагностике производственных проблем.