Perpetuum informatio



Решение проблем с производительностью IIS

Иногда бывает, что на сервере IIS начинают происходить странные дела. Так например у меня возникла ситуация, в которой один из процессов w3wp.exe время от времени начинал занимать под свои вычисления весь ресурс одного из ядер (был бы одноядерный процессор было бы использование процессора на 99% или 100%). Для тех, кто не знает процесс w3wp.exe кроме всего прочего отвечает за исполнение серверного кода ASP, ASP.NET скриптов. Ясно было что, какой-то скрипт производит излишнюю нагрузку. Такое поведение для меня было неприемлимым и я постарался решить эту задачу.

Первым делом я захотел выяснить какое из используемых нами приложений производит эту дополнительную нагрузку. Для этого я попробовал вынести все приложения в отдельные виртуальные каталоги, задав для каждого отдельный пул приложений, они же Application pool (для каждого пула приложений используется отдельный процесс w3wp.exe), попутно определяя какой из процессов к какому пулу относится. Сделать это можно довольно просто при помощи утилиты Sysinternals Process explorer. Для этого достаточно зайти в свойства процесса (при этом подсказкой может служить то, что приложения написанные при помощи ASP.NET будут подсвечены жёлтой строкой), и на вкладке Image посмотреть строку Command line, из которой видно, что название пула приложений передаётся процессу w3wp.exe через параметр «ap». Так например команда запуска для пула приложений с именем «dotnet4» будет выглядеть так:

c:\windows\system32\inetsrv\w3wp.exe -a \\.\pipe\iisipmceXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -t 20 -ap "dotnet4"

Впоследствие эти действия оказались по большему счёту бесполезными, но умение определять нужный процесс w3wp оказалось впоследствии полезным и мне и нашим разработчикам выполняющим удалённую отладку в Visual Studio.

Отличным инструментом позволившим решить мою проблему оказалось приложение IIS Tracer, от компании Motobit Software. Для быстрой отладки сервера достаточно пробной 60 дневной версии, которую можно загрузить на сайте производителя. Данная программа позволяет наблюдать за состоянием IIS в режиме реального времени. Настройку можно осуществить как при помощи текстового файла конфигрурации, так и графической утилитой, входящей в инсталляционный пакет. После установки программа будет доступна (если вы не меняли настройку Config script) по адресу http://your-site-address/iistracer. По этому адресу, кроме всего прочего, можно увидеть какие запросы клиентов выполняются в данный момент, их состояние и длительность обработки запросов сервером. Именно эта информация позволила мне обнаружить скрипт выполнявшийся вплоть до истечение таймаута, потребляя непомерное количество ресурсов. Скрипт оказался ответственнен за отправку комментариев на форум. При ближайшем рассмотрении было обнаружено что форум разрешал отправку анонимных комментариев в нескольких местах, чем и воспользовались спаммеры, постоянно пытавшиеся использовать этот скрипт. После закрытия возможности отправки анонимных комментариев и удаления нескольких тысяч записей спама в базе сервер вернулся в своё обычное состояние и проблем с производительностью больше не возникает, а как бонус пользователи были избавлены от спама.

Реклама

Trackbacks & Pingbacks

Комментарии

  1. * Albert says:

    Спасибо за статью. У меня не пошло на IIS7(7.5). Не добавил каталог /iistracer. Добавляю в ручную, не работает. Не работает фильтр (Unknow). Возможно под 7.5 не «допилена» ( А жаль. Проблему хотелось бы на сервере найти. Перепробовал много других способов, проблему не нашел. Остался этот — не получилось запустить.
    PS Бубен тоже не помог ))

    | Ответить Опубликовано 1 year, 6 months ago


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: