Iis управление памятью

Ограничение использования CPU для Application Pool в IIS 8

Важной функцией любого веб-сервера является возможность ограничения использования процессорных ресурсов CPU определенным сайтом, в противном случае один сайт может монополизировать ресурсы CPU, что может быть неприемлемо, особенно для серверов веб-хостинга, разделяемых ресурсы между несколькими клиентами с разными сайтами. В IIS (Internet Information Services) 7.0 и более ранних версиях, присутствовала возможность мониторинга использования CPU веб приложениями и отключения на несколько минут пула приложений, превысившего заданный лимит. Полноценная возможность управления потреблением ресурсов CPU, доступных каждому пулу приложений, появилась только в IIS 8.0 (Windows Server 2012 и выше). Эта возможность называется CPU Throttling и позволяет вместо временной остановки чрезмерного агрессивного к процессору пула приложений, задать максимальное количество ресурсов CPU, доступных каждому пулу IIS.

В этой статье мы покажем, как ограничить использование CPU пулами приложений в IIS 8 (и выше) на примере веб-сервера на базе Windows Server 2012.

Откройте консоль Internet Information Services (IIS) Manager (%systemroot%\system32\inetsrv\iis.msc), разверните в дереве ваш сервер и выберите раздел Application Pools. Настройки CPU Throttling в IIS находятся в разделе параметров каждого пула.

  • Если нужно включить ограничения для конкретного пула, выберите его в списке и перейдите в раздел настроек Advanced Settings.
  • Если нужно задать настройки лимитов по-умолчанию для всех пулов, нужно выбрать секцию Set Application Pool Defaults.

В окне настроек Advanced Settings нас интересуют параметры, задаваемые в секции CPU:

  • Limit – максимальный % процессорного времени, который может использовать пул приложений. При превышении этого значения, выполняется действие, указанное в поле Limit. В IIS 8 процент задается в тысячных долях (1/ 1000 процента ). К примеру, чтобы ограничить потребление CPU в 20%, в поле Limit нужно указать 20000. В IIS 8.5 значение указывается в обычных процентах. Отключить лимит использования можно, задав 0
  • Limit Action – действие, которое выполняется с пулом при превышении лимита использования CPU
  • Limit Interval (minutes) – периодичность проверки и сброса результатов загрузки при приостановке рабочего процесса. Этот параметр не используется для CPU Throttling, и используется для совместимости с предыдущими версиями IIS.

В поле Limit Action можно выбрать одно из следующих действий, которое будет выполнено при превышении заданного лимита.

  • NoAction – никаких действий не выполняется, а в журнал записывается событие о превышении CPU
  • KillW3wp (Kill worker processes) — рабочий процесс пула, превысившего лимит приостанавливается на время, указанное в поле Limit Interval. В журнал добавляется соответствующая запись.
  • Throttle – жесткое ограничение доступных ресурсов CPUзначением, заданным в поле Limit. Значение поля Limit в этом случае игнорируется, а в журнал пишется событие.
  • ThrottleUnderLimit – ограничения работают только при высокой загрузке сервера. При наличии свободных ресурсов CPU, пул может превысить заданный лимит.

Настроить CPU Throttling можно и из командной строки с помощью утилиты appcmd. Например, чтобы для пула DefaultAppPool установить ограничение в 30% использования CPU, нужно выполнить команду:

%systemroot%\system32\inetsrv\appcmd set apppool DefaultAppPool /cpu.limit:30000 /cpu.action:Throttle

Включить ограничение для всех пулов IIS можно так:

%systemroot%\system32\inetsrv\appcmd set config -section:system.applicationHost/applicationPools /applicationPoolDefaults.cpu.limit:10000 /cpu.action:Throttle /commit:apphost

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

Таким образом, в IIS 8 появилась возможность гибкого регулирования загрузки сервера запущенными веб-приложениями. Но нужно понимать, что CPU Throttling используется только для ограничения максимальной загрузки CPU, но не для резервирования процессорных мощностей для веб-приложения.

Iis управление памятью

��� ������ ����, ������� ��� �������.
Sep 10 00:01:53 WAS: 5077: A worker process with process id of ‘307388’
serving application pool ‘second-hand66.ru(domain)(2.0)(pool)’ has
requested a recycle because it reached its virtual memory limit.
Sep 10 00:05:53 WAS: 5077: A worker process with process id of ‘312520’
serving application pool ‘second-hand66.ru(domain)(2.0)(pool)’ has
requested a recycle because it reached its virtual memory limit.

Iis управление памятью

Опубликовано: Февраль 2012 г.

Обновлено: Февраль 2012 г.

Назначение: Windows Server 2012, Windows Server 2012 R2

В этом документе описан процесс установки веб-сервера IIS и его настройки для обслуживания статического содержимого. Статическим содержимым является веб-страница (HTML), которая доставляется пользователю в том виде, в котором она хранится. И наоборот, динамическое содержимое формируется веб-приложением, таким как ASP.NET, классическим приложением ASP или приложением PHP. Статическое содержимое отображает одинаковые сведения для всех пользователей; динамическое содержимое может отображать сведения о конкретном пользователе, например имя пользователя.

Веб-сервер статического содержимого представляет собой самую простую конфигурацию служб IIS для поддержки веб-сайтов HTML. Веб-сервер статического содержимого можно использовать для размещения внутренних или внешних (общедоступных) веб-сайтов. При установке IIS 8 по умолчанию устанавливаются все модули IIS, необходимые для поддержки веб-серверов со статическим содержимым. Установка по умолчанию включает возможность обслуживания статических HTML-файлов, документов и изображений. IIS 8 поддерживает использование документов по умолчанию, просмотра каталогов, ведения журналов и анонимного доступа для сервера со статическим содержимым.

Содержание документа

Чтобы получить максимум от этого учебника, необходимо иметь компьютер, который работает под управлением одной из следующих операционных систем:

    Windows Server® 2012

Для установки служб IIS и работающих на их базе приложений можно использовать установщик веб-платформы. Установщик веб-платформы устанавливает последние версии доступных предложений для веб-платформы, включая обновления. Дополнительные сведения об установщике веб-платформы см. в статье Дополнительные сведения об установщике веб-платформы и его установке. Если для установки служб IIS используется установщик веб-платформы, шаг 2 можно пропустить.

Эту процедуру можно также выполнить с помощью пользовательского интерфейса Windows или командной строки.

На начальной странице щелкните плитку Диспетчер сервера, а затем нажмите кнопку ОК.

В диспетчере сервера выберите Панель мониторинга и щелкните Добавить роли и компоненты.

В мастере добавления ролей и компонентов на странице Перед началом нажмите кнопку Далее.

На странице Выбор типа установки выберите Установка ролей или компонентов и нажмите кнопку Далее.

На странице Выбор целевого сервера выберите Выбор сервера из пула серверов, выберите имя своего компьютера и нажмите кнопку Далее.

На странице Выбор ролей сервера укажите Веб-сервер (IIS) и нажмите кнопку Далее.

На странице Выбор компонентов просмотрите выбранные по умолчанию компоненты, а затем нажмите кнопку Далее.

На странице Роль веб-сервера (IIS) нажмите кнопку Далее.

На странице Выбор служб ролей просмотрите выбранные службы и нажмите кнопку Далее.

Примечание
Установите службы ролей IIS 8 по умолчанию для веб-сервера статического содержимого.

На странице Подтверждение выбранных элементов для установки подтвердите свой выбор, а затем нажмите кнопку Установить.

На странице Ход выполнения установки убедитесь, что установка роли веб-сервера (IIS) и требуемых служб ролей успешно завершена, а затем нажмите кнопку Закрыть.

Чтобы убедиться, что службы IIS успешно установлены, введите в веб-браузере следующее:

http://localhost

Должна отобразиться страница приветствия служб IIS по умолчанию.

На начальной странице введите Панель управления, а затем в результатах поиска щелкните значок Панель управления.

В панели управления выберите Программы, а затем Включение и отключение компонентов Windows.

В диалоговом окне Компоненты Windows щелкните Службы IIS, а затем нажмите кнопку ОК.

Будет установлен набор компонентов IIS 8 по умолчанию. Установите только компоненты по умолчанию для веб-сервера статического содержимого.

Чтобы убедиться, что службы IIS успешно установлены, введите в веб-браузер следующее:

http://localhost

Должна отобразиться страница приветствия служб IIS по умолчанию.

В командную строку с повышенными привилегиями или в скрипт введите следующую команду:

Start /w pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-Security;IIS-RequestFiltering;IIS-HttpCompressionStatic;IIS-WebServerManagementTools;IIS-ManagementConsole;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI

На этом шаге поясняется, как добавить веб-сайт для служб IIS с помощью пользовательского интерфейса диспетчера служб IIS или путем запуска команд Appcmd.exe в окне командной строки

Откройте диспетчер служб IIS.

    При работе в Windows Server 2012 на начальной странице щелкните Диспетчер сервера, а затем нажмите кнопку ОК. В диспетчере сервера выберите меню Сервис, а затем выберите Диспетчер служб IIS.

При работе в Windows 8 на начальной странице введите Панель управления, а затем в результатах поиска щелкните значок Панель управления. На экране Панель управления выберите Системы и безопасность, затем Администрирование, после чего выберите Диспетчер служб IIS.

На панели Соединения правой кнопкой мыши щелкните узел Сайты, а затем выберите Добавить веб-сайт.

В диалоговом окне Добавление веб-сайта в поле Имя сайта введите понятное имя веб-сайта.

Щелкните Выбрать, если нужно выбрать пул приложений, отличный от пула, указанного в поле Пул приложений. В диалоговом окне Выбор пула приложений в списке Пул приложений выберите пул приложений, а затем нажмите кнопку ОК.

В поле Физический путь введите физический путь к папке веб-сайта или нажмите кнопку обзора (. ), чтобы перейти к файловой системе для поиска папки.

Если физический путь, указанный на предыдущем шаге, ведет к удаленной общей папке, щелкните Подключиться как, чтобы указать учетные данные, имеющие разрешение на доступ к ресурсу по этому пути. Если определенные учетные данные не используются, выберите параметр Пользователь веб-приложения (сквозная проверка подлинности) в диалоговом окне Подключиться как.

В списке Тип выберите протокол для веб-сайта.

. Если необходимо указать статический IP-адрес для веб-сайта (по умолчанию для этого параметра задано Все неназначенные), введите IP-адрес в поле IP-адрес.

В поле Порт введите номер порта.

Дополнительно введите имя заголовка узла для веб-сайта в поле Заголовок узла.

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

Нажмите кнопку ОК.

В командной строке с повышенными привилегиями или в скрипте используйте следующий синтаксис:

Примечание
Чтобы этот синтаксис работал, необходимо либо находиться в следующем каталоге, либо иметь каталог в пути: %windir%\system32\inetsrv

appcmd add site /name:string /id:цел_чис_без_зн /physicalPath:строка /bindings:строка

Переменная name является именем, а переменная id — положительным целым числом, которое следует назначить сайту. Переменные name и id являются единственными переменными, которые требуются для добавления сайта с помощью команды appcmd. Но при добавлении сайта без задания значений атрибутов bindings и physicalPath сайт будет невозможно запустить.

Переменная physicalPath является абсолютным путем к содержимому сайта в файловой системе.

Переменная bindings содержит сведения, используемые для доступа к сайту. Она должна иметь вид протокол/IP_адрес:порт:заголовок_узла. Например, если указать для веб-сайта привязку http/*:85: , то это будет означать, что он прослушивает HTTP-запросы на порту 85 для всех IP-адресов и доменных имен (также известных как заголовки узлов или имена узлов). С другой стороны, привязка http/*:85: marketing.contoso.com настраивает сайт для прослушивания HTTP-запросов на порту 85 для всех IP-адресов и доменного имени marketing.contoso.com.

Чтобы добавить веб-сайт contoso с идентификатором 2 и содержимым в папке c:\contoso, который прослушивает HTTP-запросы на порту 85 для всех IP-адресов и доменного имени marketing.contoso.com, введите в командную строку следующее:

appcmd add site /name:contoso /id:2 /physicalPath:c:\contoso /bindings:http/*:85:marketing.contoso.com

Анонимный доступ предоставляет пользователям доступ к общедоступным зонам веб-сайта без запроса имени пользователя и пароля. Анонимную проверку подлинности можно настроить с использованием учетной записи анонимного пользователя по умолчанию (IUSR) или можно настроить учетную запись локального пользователя для анонимных пользователей.

В представлении Просмотр возможностей диспетчера служб IIS дважды щелкните пункт Проверка подлинности.

На странице Проверка подлинности выберите Анонимная проверка подлинности.

Для установки субъекта безопасности (учетных данных пользователя), с использованием которого анонимные пользователи должны подключаться к веб-сайту, на панели Действия нажмите кнопку Изменить.

В диалоговом окне Изменение учетных данных анонимной проверки подлинности выберите один из следующих параметров.

    Если нужно настроить определенную учетную запись пользователя, которую службы IIS используют для доступа к вашему сайту или приложению, выберите Указанный пользователь. Затем нажмите Установить, чтобы открыть диалоговое окно Задание учетных данных, и введите имя пользователя и пароль для удостоверения. Затем нажмите кнопку ОК.

Если нужно, чтобы процессы служб IIS запускались с помощью учетной записи, указанной в настоящий момент на странице свойств пула приложений, выберите Удостоверение пула приложений. По умолчанию этим удостоверением является учетная запись IUSR.

Важно
При использовании учетной записи IUSR анонимным пользователям предоставляется возможность с помощью этой учетной записи осуществлять доступ ко всей внутренней сети.

Нажмите кнопку ОК, чтобы закрыть диалоговое окно Изменение учетных данных анонимной проверки подлинности.

Используйте следующий синтаксис, чтобы изменить учетную запись по умолчанию для анонимного доступа:

appcmd set config /section:anonymousAuthentication /userName:строка /password:строка

Переменная username является учетной записью, используемой службами IIS для анонимного доступа, а переменная password — это пароль, который хранится в файле конфигурации по умолчанию в зашифрованном виде. Например, чтобы использовать учетную запись Moe и пароль pssword1 для анонимного доступа, в командной строке введите следующее:

appcmd set config /section:anonymousAuthentication /userName:Moe /password:pssword1

Если клиентский запрос к веб-сайту не содержит имени документа, службы IIS ищут файл, имя которого определено в качестве документа по умолчанию. Обычно именем документа по умолчанию является Default.htm. Можно определить список имен документов по умолчанию в порядке старшинства.

В представлении Просмотр возможностей диспетчера служб IIS дважды щелкните пункт Документ по умолчанию.

На панели Действия нажмите кнопку Добавить.

В поле Имя введите имя файла, которое необходимо добавить в список документов по умолчанию, затем нажмите кнопку ОК. Это имя файла будет добавлено в верхнюю часть списка документов по умолчанию.

Кроме того, документ по умолчанию можно выбрать в списке, а затем на панели Действия щелкнуть Вверх или Вниз, чтобы изменить приоритет файла.

Документ по умолчанию также можно выбрать в списке и на панели Действия нажать кнопку Удалить, чтобы удалить любые имена файлов, которые не следует использовать в качестве документов по умолчанию.

Чтобы добавить имя файла в список документов по умолчанию, используйте следующий синтаксис:

appcmd set config /section:defaultDocument /+files.[value=’строка‘]

Переменная string является добавляемым в список именем файла. Например, чтобы добавить файл home.html в список документов по умолчанию, в командной строке введите следующее:

appcmd set config /section:defaultDocument /+files.[value=’home.html’]

Чтобы удалить файл home.html из списка документов по умолчанию, в командной строке введите следующую команду и нажмите клавишу ВВОД:

appcmd set config /section:defaultDocument /-files.[value=’home.html’]

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

В представлении Просмотр возможностей диспетчера служб IIS дважды щелкните пункт Сжатие.

Выберите Включить сжатие статического содержимого для сжатия службами IIS статического содержимого.

В поле Статическое содержимое настройте следующие параметры:

    Выберите Сжимать только файлы размером более (в байтах) и введите минимальный размер файла, при котором файлы будут сжиматься службами IIS (необязательный шаг). Размер по умолчанию — 256 байт.

В текстовом поле Каталог кэша введите путь к локальному каталогу или нажмите кнопку обзора () для поиска нужного каталога. После сжатия статический файл хранится во временной папке до истечения срока действия или до изменения его содержимого. Временная папка должна находиться на локальном диске в разделе, отформатированном файловой системой NTFS. Этот каталог не может подвергаться сжатию, и он не должен быть общим.

Кроме того, можно установить флажок Лимит места на диске на пул приложений (в МБ) и ввести максимальный размер дискового пространства (в мегабайтах), отводимого для каждого пула приложений, которое будет использоваться службами IIS при сжатии статического содержимого. Например, если существует 20 пулов приложений на сервере и параметр Лимит места на диске равен 100, максимальный объем дискового пространства будет равен 2 ГБ. Если выбрать параметр Лимит места на диске на пул приложений (в МБ) и ввести в текстовом поле определенное значение, то при достижении порогового значения службы IIS автоматически очистят временную папку в соответствии с правилом удаления наиболее давно использовавшихся файлов. Значение по умолчанию — 100 МБ для каждого пула приложений.

Нажмите кнопку Применить на панели Действия.

Чтобы включить сжатие HTTP статического содержимого, в командной строке введите следующую команду и нажмите клавишу ВВОД:

appcmd set config /section:urlCompression /doStaticCompression:True

Чтобы настроить параметры сжатия статического содержимого, используйте следующий синтаксис:

appcmd set config /section:urlCompression /minFileSizeforComp:цел_чис /directory:строка /maxDiskSpace:цел_чис

Переменная minFileSizeforComp служит для задания минимального размера файла в байтах, подлежащего сжатию. Значение по умолчанию — 256. Переменная directory служит для указания каталога, где временно сохраняются и кэшируются сжатые версии статических файлов. По умолчанию используется следующая папка:

%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files

Переменная maxDiskSpace служит для определения максимального количества места на диске (в мегабайтах) для каждого пула приложений, которое будет использоваться службами IIS при сжатии статического содержимого. Значение по умолчанию — 100 МБ для каждого пула приложений.

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

    Чтобы облегчить устранение проблем или оптимизацию производительности веб-сервера, настройте ведение журнала служб IIS. Инструкции см. в статье Настройка ведения журнала в IIS.

Для повышения защищенности веб-сервера настройте фильтрацию запросов. Инструкции см. в статье Настройка фильтрации запросов в IIS.

Настройка работы веб-клиента на IIS сервер

В состав FossDoc входит встроенный сервер WebXSP, позволяющий работать с документами через браузер. Рабочее место пользователя на веб-браузере поддерживает почти все функции десктопного FossDoc клиента.

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

Тем не менее, встроенный веб-сервер содержит некоторые ограничения, и в ряде случаев существует необходимость использовать IIS (Internet Information Services) сервер, который является стандартным компонетом Windows и может быть быстро установлен и гибко настроен.

IIS сервер рекомендуется использовать в следующих случаях:

  • Количество пользователей, работающих с системой документооборота, больше 100.
  • Необходимо более гибкое управление ресурсами (Dashboard).
  • Канал связи между сервером и клиентом должен быть защищен по протоколу SSL.

Важно: При работе на WebXSP больше 100 пользователей наблюдается повышенное потребление памяти, его работа замедляется, что может привести к значительным неудобствам. IIS эффективнее взаимодействует с памятью, имеет расширенные средства управления и возможность диагностики загрузки сервера. Также существует возможность настроить шифрованное SSL соединение между браузером и сервером документооборота, что делает соединение таким же защищенным и надежным, как и при использовании десктоп приложения рабочего места (программы FossDoc Client).

В этой статье будут рассмотрены процессы настройки сервера IIS и замены им WebXSP сервера, входящего в стандартную поставку СЭД FossDoc.

Настройка IIS Сервера

Первое, что необходимо сделать, это остановить модуль «Web Server» в панели администрирования FossDoc.

Далее нужно убедиться, что в памяти компьютера нет процесса Mono.WebServer.XSP.

После того, как модуль был остановлен, и вы убедились, что поцесса Mono.WebServer.XSP нет в памяти, необходимо установить IIS (в некоторых случаях он уже может быть установлен в системе). Для этого нужно зайти в Панель управления/Программы и компонеты/Включение и отключение Компонентов Windows, выбрать компонент Службы IIS и подтвердить установку.

Также необходимо установить некоторые компоненты разработки приложений ASP.NET. Для этого потребуется выбрать следующие элементы:

Остальные зависимости проставятся автоматически.

Когда установка компонентов завершится, запустите диспетчер служб IIS: Панель управления/Администрирование/Internet Information Services. В открывшемся окне в дереве необходимо расхлопнуть иерархию Сайты, вызвать контекстное меню на пункте Default website (сайт по умолчанию) и выполнить Удалить.

Затем создайте новый сайт (выполните Добавить веб-сайт из контекстного меню иерархии Сайты.

Появится окно добавления нового веб-сайта, в котором нужно ввести следующие параметры:

  • Имя сайта.
  • В выпадающем меню Аplication Pool необходимо выбрать .NET 4.5, который до этого был установлен в компонентах Windows.
  • Физический путь C:/Program Files x86/FOSS/Aplication Server/Instances/Web/Webserver/.
  • Порт (опционально).
  • Тип соединения (опционально).
  • Снять галочку Запустить веб-сайт сейчас.

В завершение необходимо дать группе пользователей ISS необходимые права для работы с файлами веб-сервера.

И запустить сервер.

Важно: По умолчанию IIS не имеет разрешений для работы в системной директории, и если для группы пользователей IIS не настроить права доступа, то попытка запуска сервера приведет к ошибке!

Обновление веб-сервера

При обновлении версии сервера FossDoc модуль веб-клиент может не обновиться, так как он был остановлен при настройке IIS (одновременная работа IIS и встроенного сервера WebXSP невозможна).

Для его обновления необходимо обновить папку веб-клиента вручную или произвести следующие действия:

  • Остановить IIS.
  • Обновить FossDoc.
  • Включить модуль «Web Server» в программе администрирования FossDoc, чтобы он обновил файлы веб-клиента.
  • Отключить модуль «Web Server».
  • Запустить IIS.

Пул приложений IIS, управление памятью

У меня есть служба RESTful WCF, размещенная на IIS 7.5. Когда вызывается какая-то операция, она возвращается почти сразу, но начинает сложную задачу, касающуюся комбинаторики и открытия больших файлов в памяти. После нескольких запросов около 50% памяти используется пулом приложений, хотя задачи уже завершены. Когда пул IIS восстанавливает память? Я попытался вызвать GC.Collect() , но ничего не произошло. Есть ли способ профилировать приложения, подобные этому? Я попробовал несколько профилировщиков, но они показывают только классы.NET, которые IIS использует для обработки запроса.

Долгосрочные задачи обычно не подходят для веб-приложений, так как они тайм-аут/зависают отзывчивость веб-сайта /API Можно ли настроить фоновое задание для асинхронного запуска сайта IIS? Таким образом, вы можете продвигать эти медленные задачи в очередь и обрабатывать их в фоновом режиме

Я думаю, что использование памяти в этом процессе является проблемой, но не рассказывает всю историю, что вам удалось просмотреть до сих пор? У вас незакрытые связи затянуты? Вы создаете экземпляры нескольких классов, которые не удаляются эффективно? Я бы посмотрел, чтобы профилировать план выполнения вызова больше, чем использование памяти, так как это может привести к большим количеством вызовов о том, где находятся элементы

Когда вы говорите 50% памяти, сколько мы говорим на самом деле в мб? IIS может быть немного жадным/ленивым, когда ему не нужно отказываться от ОЗУ

IIS 7.0: краткая инструкция для системного администратора. Часть 1 – пpoверка результатов установки.

Продолжаем говорить об процедуре установки веб сервера под управлением IIS 7.0 на Windows Server 2008, которая была рассмотрена в предыдущем посте.

Теперь перейдем к проверке результатов установки IIS 7.0. Самый простой вариант проверить, работает ли веб сервер, особенно – находясь за локальной консолью, это обратиться из любого веб-браузера по адресу http://localhost/. Далее, проверить с локальной и удаленной машины по IP-адресу.

При установке IIS 7.0 создается веб сайт по умолчанию, сконфигурированный на ответ при любом URL-запросе, поступившем на порт 80 любого сетевого интерфейса сервера, на котором установлен IIS 7.0. Т.е. запрос браузера типа http://localhost/ должен быть обработан как запрос к веб сайту по умолчанию. Содержимое сайта по умолчанию представляет собой 2 файла – iisstart.htm и welcome.png (который отображается в iisstart.htm), которые и будут открыты клиентом. Поэтому результат обращения к localhost будет иметь следующий вид:

Теперь, если все хорошо (если «плохо» – поиск неисправностей и ошибок мы рассмотрим позже, в отдельном разделе), убедимся, что все модули, которые должны быть установлены по умолчанию – подключены и работают, а базовая конфигурация – отвечает нашим требованиям.

1. Основным инструментом управления IIS 7.0 является консоль Internet Information Services (IIS) Manager, которая устанавливается по умолчанию, вместе с ролью Web Server в Windows Server 2008 (IIS Management Console, раздел Management Tools при установки модулей). После соответствующей установки консоль управления IIS 7.0 можно найти, как дочернюю запись внутри раздела Web Server (IIS) в разделе ролей Server Manager, либо как пункт в разделе Administrative Tools меню Start, либо выполнив команду inetmgr (в командной строке или через пункт Run того же меню Start).

2. При старте консоль Internet Information Services (IIS) Manager открывается с «домашней страницей», на которой в виде панелей находится информация о том, к каким веб серверам и веб сайтам подключался пользователь консоли до этого (если консоль только установлена вместе с ролью Web Server (IIS), то в консоле присутствует запись только о локальном веб сервере), также присутствуют ссылки для выбора подключения к другим серверам, веб сайтам, веб приложениям и папкам, а также ссылки на внешние ресурсы, посвященные IIS.

3. Кроме того, на домашней странице присутствует панель новостей, которые подгружаются как новостная RSS-лента с сайта www.iis.net, если администратор нажимает на ссылку Enable IIS News. Новости, кстати, очень полезные, рекомендуется включать и использовать эту информацию в повседневной работе.

4. При подключении к какому либо веб серверу IIS 7.0 консоль Internet Information Services (IIS) Manager представляет его конфигурацию, как логическую структуру – уровень самого веб сервера, чьи настройки являются глобальными и распространяются по умолчанию на все веб сайты, пулы приложений и, сообственно, веб сайты со своими настройками. Эта конфигурационная иерархия, в виде разворачивающегося дерева, начинающегося с узла с именем (или IP) веб сервера, отображается в левой панели консоли Internet Information Services (IIS) Manager.

5. Если выбрать какой-то узел в дереве конфигурации, то в центральной панель консоли Internet Information Services (IIS) Manager будут отображены в виде отдельных иконок все параметры (а также – модули или списки), соответствующие конфигурации выбранного узла, а в правой панели – набор контекстных задач и операций, которые администратор (или пользователь) может выполнить над данным узлом.

6. Выбираем верхний узел, узел веб сервера, в котором представлены иконки, отвечающие за параметры работы модулей всего веб сервера, эти параметры наследуются по умолчанию для всех веб сайтов. Убеждаемся, что все необходимые модули установлены и отображены. Снимок экрана при установке конфигурации по умолчанию приведен ниже.

7. В правой панели при выборе узла веб сайта отображаются все операции, возможные для выполнения непосредственно с веб сервером (службами IIS в целом) в данном конексте – перезапуск, останов, запуск, переход к пулам приложений и сайтам.

8. Убеждаемся, что пулы приложений (Application Pools) сконфигурированы. Пулы приложений будут рассмотрены позже. Пулы являются дочерним узлом в дереве конфигурации для узла веб сайта. При установке по умолчанию создается только один пул – DefaultAppPool, в котором регистрируется одно приложение – сконфигурированный по умолчанию веб сайт, работу которого мы уже проверили. См. снимок экрана.

9. Ниже узла пулов приложений в дереве конфигурации находится узел веб сайтов (Sites), при выборе которого отображается список работающих на данном веб сервере веб сайтов. По умолчанию создается один веб сайт под названием Default Web Site с внутренним номером (ID) равным 1, «привязанный» на 80 порт всех IP-адресах всех сетевых интерфейсов к любому URL в запросе, и использующий в качестве домашнего каталога своего контента каталог с путем %SystemDrive%\inetpub\wwwroot (что при установленном Windows Server 2008 на диск C: соответствует C: \inetpub\wwwroot).

10. При выборе в левой панели консоли узла веб сайта (Default Web Site), также, как и в случае с выбором узла веб сервера, в центральной панели отображаются иконки для доступа к параметрам конфигурации различных модулей, на этот раз – конкретного веб сайта. Убеждаемся, что также, как и в случае со всем веб сервером, все необходимые модули представлены в центральной панели.

11. В правой панели консоли, аналогично панели для всего веб сервера, отображаются контекстные команды, правда, на этот раз их список серьезно расширен – старт/стоп/перезапуск процесса веб сайта, просмотр его базовых и расширенных настроек (а не параметров модулей), настройки привязки (адрес, порт, доменное имя – по сочетанию которых будет отвечать на запросы данный веб сайт) и т.п.

В принципе, для базовой проверки работоспособности и целостности установки данных шагов вполне достаточно. Но если вы хотите поближе познакомиться с «полным» набором настроек и конфигурацией «по умолчанию» – то можете проделать следующие шаги.

12. Выберите узел веб сервера в дереве конфигурации в левой панели консоли Internet Information Services (IIS) Manager. В центральной панели кликните на иконку Modules. В центральной панели откроется следующий полный список установленных по умолчанию модулей, представляющий из себя перечень .dll файлов.

13. Чтобы убедиться, что веб сервер будет работать только со статическими файлами (по умолчанию) или только с нужными вам расширениями – выберите снова узел веб сервера и в центральной панели кликните на иконку Handler Mappings. Откроется список «привязки» расширений вызываемых на веб сайте пользователем файлов и привязанных к данным расширениям модулям, выполняющим обработку данного вызова. Обратите внимание, что по умолчанию все файлы привязаны к модулю обработки статических файлов (т.е. запрос какого либо скриптового или исполнимого файла из домашнего каталога веб сайта не будет приводить к его исполнению на сервере, а лишь к передаче данного файла пользователю), а также к модулям документа по умолчанию и просмотра каталога. С этими модулями мы познакомимся позже.

14. И, наконец, для того, чтобы убедиться в безопасности веб сайта – проверьте параметры его аутентификации. Для этого выбираем иконку Authentication в той же центральной панели. По умолчанию никаких модулей аутентификации веб сервер (и веб сайты) не поддерживает. Т.е. все подключения для него анонимны. В чем безопасность? Это значит, что пользователям будет доступен только то содержимое домашних каталогов сайтов – файлы и подкаталоги – которые имеют NTFS разрешения для чтения «всем» (Everyone). В случае, если таких разрешений файл не имеет, пользователю будет отказано в доступе с соответствующей ошибкой 401. Если же пользователь попробует каким-то образом аутентифицироваться в процессе HTTP запроса на сервере – то поскольку никаких модулей аутентификации, кроме анонимного, на веб сервере не установлено – он снова получит соответствующую ошибку 401.

Такие настройки безопасности по умолчанию – только анонимные пользователи – позволяют гарантировать защиту данных на сервере, для которых требуются соответствующие разрешения, а также – что механизм аутентификации веб сервера (которого в данном случае просто нет) не будет использован для перебора паролей и прочих попыток «взлома» через учетные записи.

Итак, сервер установлен и его работоспособность проверена. Теперь достаточно поместить какой либо статический контент (файлы HTML, изображения, документы и файлы для выгрузки пользователями) в домашний каталог его сайта по умолчанию (напоминаю, что это в большинстве случаев C:\inetpub\wwwroot) – и веб сайт под управлением IIS 7.0 начнет работать. Ну, и конечно, для внешних сайтов – не забыть прописать их A-record в вашей доменной зоне на публичном DNS сервере.

В следующей части – установка IIS 7.0 в режиме командной строки, особенности работы IIS 7.0 на Server Core.

Ограничиваем пропускную способность IIS на сервере SCCM с ролью SUP (WSUS).

В процессе централизованной раздачи клиентам System Center 2012 R2 Configuration Manager (SCCM) очередной порции обновлений с сервера с ролью Software Update Point (SUP)столкнулись с ситуацией пиковой загрузки на канале передачи данных — участка с низкой пропускной способностью на канале между структурными подразделениями и площадкой, на которой был расположен сервер SCCM. По графику отдачи трафика на сервере SCCM было хорошо видно, что исходящий трафик “упёрся” в границу того самого “узкого места на канале. Разумеется таких ситуаций чаще всего можно избежать заранее настраивая приоритизацию трафика на разных уровнях, начиная с сетевого оборудования. Но что делать, если по какой-то причине проблема возникла прямо здесь и прямо сейчас, а доступа к сетевому оборудованию нет. То есть фактически нужно как-то оперативно “задушить” трафик отдачи обновлений Windows Update на определённый момент времени средствами Windows. Простое и эффективное решение подсказал автор заметки Ограничиваем аппетиты WSUS-а .

В качестве решения предлагается ограничение общей пропускной способности (в байтах) веб-сервера IIS. За это отвечает параметр maxGlobalBandwidth в разделе конфигурации IIS — system.applicationHost/webLimits .

Чтобы запросить текущие значения параметров в указанном разделе конфигурации IIS с помощью утилиты командной строки appcmd.exe выполним:

В полученном ответе мы увидим, что значение по умолчанию для интересующего нас параметра параметра – 4294967295:

Предположим, нам нужно уменьшить полосу пропускания трафика IIS до 20 Mbit/s. Рассчитаем необходимое значение параметра в байтах: (20 * 1024 * 1024)/8 = 2 621 440 байт.

Выполним команду установки рассчитанного значения:

В ответ получим сообщение об успешном применении параметра конфигурации:

Туже самую настройку можно выполнить и через консоль IIS Manager, перейдя на уровне веб-сервера в раздел Management > Configuration Editor

В поле Section из выпадающего дерева элементов конфигурации выберем system.applicationHost/webLimits , зададим значение интересующего нас параметра maxGlobalBandwidth и нажмём в правом меню действий Apply, чтобы изменения вступили в силу.

Результат сможем наблюдать сразу же. В нашем случае с настройками IIS по умолчанию отдача трафика клиентам была на пределе возможностей “узкого места” в сети, что вызывало ряд вытекающих проблем для пользователей находящихся в “задушенном” сегменте сети.

Сразу после применения рассчитанного нами параметра ситуация изменилась на глазах…

Таким образом критическая ситуация загрузки канала была ликвидирована.

У такого подхода к ограничению трафика в отличии от классического использования QoS есть преимущество в том, что в случае необходимости изменения пропускной способности по какому-то заданному расписанию, можно прибегнуть к помощи планировщика заданий Windows, запуская из него в нужное время вышеприведённую команду настройки IIS.

Best practices for memory limits in an IIS app pool

I wanted to know what people used as a best practice for limiting memory on IIS [5/6/7]. I’m running on 32bit web servers with 4GB of physical memory, and no /3GB switch. I’m currently limiting my app pools to 1GB used memory. Is this too low? any thoughts?

2 Answers 2

All the limits in the application pool are for bad behaving apps. And more specifically:

  1. To prevent the bad app from disturbing to good apps.
  2. To try and keep the bad app running as much as possible.

In that light, the answer is off course: It depends.

If your application is leaking then without a limit it will crash around 1.2 — 1.6 Gb (if memory serves). So 1 Gb is sensible. If during normal operation your application consume not more the 100 Mb and you have many app pool on the server, than you should set the limit lower to prevent one app from damaging other apps.

To conclude. 1 Gb is sensible. Hitting the limits should be treated as application crash and debugged and fixed.

David Wang blog is a good resource on those issues.

Iis управление памятью

Мы замечаем, что свободная память на ящиках постоянно находится на 5-10% свободной. На самом деле мы запускаем довольно много приложений на этих блоках (13 сайтов, 80 приложений в 13 пулах приложений). Большая часть кода дублируется для каждого сайта, так как они соответствуют другой базе данных и физическому сайту, но приложение одинаково.

Мы уверены, что в приложении есть утечка памяти, так как память только продолжает расти, поэтому мы смотрим на это сразу, но меня смущает вопрос о выделении памяти и управлении IIS. Мне интересно, отличается ли это для серверов IIS 8 или x64 (мы только недавно перешли на x64).

Таким образом, каждый из наших веб-серверов имел 6 ГБ памяти и занимал 5-10% свободной памяти. Лучшее приложение, которое, как мы уверены, просочилось, использовало колоссальные 1,2 ГБ памяти. Следующий был около 800 МБ, а остальные в среднем около 400-500 МБ (все эти значения являются частной памятью, как видно из диспетчера задач). Как я уже сказал, код дублируется, поэтому, если на одном сайте есть утечка, он будет во всех они просто в разных физических местах могут включать или выключать некоторые функции, что объясняет большие расхождения.

Пока мы решали проблему, мы решили просто увеличить объем памяти, чтобы не сталкиваться с проблемами. Прошлой ночью я отключил каждый сервер и удвоил объем памяти до 12 ГБ. Этим утром 3 сервера сидят на 77%, 80% и 82% используемой памяти. Все процессы увеличили использование памяти в 1,5-2 раза.

Так что теперь я в замешательстве. Это действительно утечка памяти? Или есть какое-то предварительное распределение памяти? Или он никогда не освобождает память, если другой процесс не запрашивает его как SQL Server или как?

Что контролировало уровни памяти на уровне 6 ГБ, если они внезапно становятся такими огромными, когда память удваивается? Есть ли пороги, которые установлены? IIS / ASP просто не собирает мусор до тех пор, пока не станет мало памяти или как?

Любые ответы приветствуются.

Конфигурация кэширования вывода по умолчанию в IIS включает как кэширование в режиме ядра, так и в режиме пользователя.

Кеширование в режиме ядра управляется собственным драйвером HTTP (он же http.sys) и работает молниеносно, но может обслуживать только контент, который является «общедоступным», поскольку он должен иметь возможность реагировать на попадание в кэш до того, как запрос достигнет веб приложение.
К сожалению, это означает, что ряд типов запросов не может быть кэширован в режиме ядра, включая авторизованные сеансы (например, посещения веб-сайтов, требующих аутентификации).

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

Кэширование в пользовательском режиме, с другой стороны, управляется на уровне приложения, и кэшированные объекты хранятся в наборе памяти обслуживающего рабочего процесса. Общий размер кэша определяется атрибутом maxCacheSize в элементе конфигурации system.webServer/Caching .

По умолчанию атрибут maxCacheSize имеет значение 0, что примерно соответствует разрешению IIS выделять столько памяти, сколько допустимо в настоящее время.

Если у вас много последовательных небольших (

Трактат о производительности MS CRM. Книга III: настройка IIS

На примере IIS 7.x … ��

Обновление КЭШа

Опция Expire (Истечение) управляет кэшем для клиентов, обращающихся к CRM (и не только). По умолчанию, истечение устанвлено в три дня. Любая система (сайт) с довольно статичным информационным контентом или развернутая в глобальной сети с медленными подключениями, может извлечь выгоду из увеличения этого значения, например, до 15 дней.

В результате элементы Microsoft Dynamics CRM будут загружаться во временные файлы и втечении 15 дней не будет проверятся налитчие новых версий.
Откойте менеджер IIS – щелкните по сайту Microsoft Dynamics CRM – в представлении Features View откройте HTTP Response Headers – на панели Actions (прилеплена к правой стороне окна) щелкните по Set Common Headers – и задайте значение для Expire.

Примечание: изменения вступят в силу на клиентских компьютерах после истечения срока текущих настроек.

IIS7 Output Caching

Веб-содержимое может быть разделено на две категории: статическое информационное наполнение и динамическое информационное наполнение. Статическое информационное наполнение не изменяется от запроса к запросу. Примером статического информационного наполнения являются файлы HTML, JPG или GIF.
Динамическое же информационное наполнение изменяется с каждым запросом. Например, ASP.NET или PHP страницы.

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

Возможность IIS 7.0 Output Caching, как раз и предназначается для полудинамического контекта (но также может кэшировать и статический контент). Она позволяет Вам кэшировать отдельные (статические) копии ответов динамических запросов, основываясь на строке запроса.

Что для этого нужно…

  • Откройте IIS, выберите сайт Microsoft Dynamics CRM;
  • В представлении Feature View дважды щелкните по Output Caching;
  • На панели Action, нажмите Edit Feature settings, удостоверьтесь, что и кэш и кэш ядра включены и нажимите OK;Теперь нужно добавить правила кэширования для сайта, которые мы запустим на Корневом уровне.
  • Все еще в корне веб-сайта в разделе Output Caching, нажмите Add и задайте такие параметры:
    • File Name Extension: bmp
    • Поставьте галку: Kernel Mode Caching
    • File Cache Monitoring: Using file change notifications
    • Нажмите OK и добавьте такие же правила кэширования для расширений css, gif, htc, js и png файлов.

    Отключение логов IIS

    Ведение логов IIS занимает ресурсы процессора, дисков и памяти, что не очень позитивно сказвыается на производительности. Поэтому их включение целесообразно только для отладки приложений или устранения каких-либо проблем. Чтобы отключить ведение логов сделайте следующее:
    В IIS Manager выделите сайте CRM – в представлении Feature View дважды щелкните кнопкой по Logging – щелкните по Disable, чтобы отключить логи для сайта.

    HTTP Compression

    Еще один способ улучшить производительность состоит в том, чтобы сжимать страницы перед отправкой их клиенту. Но это «палка о двух концах» — сжатие уменьшает трафик между клиентами и сервером, что может быть весьма выгодно при низкой пропускной способности канала, но в то же время данное действие потребляет больше процессорных и других ресурсов (особенно если страницы динамические и их приходится сжимать при каждом запросе).
    Чтобы включить сжатие:

    • Щедкните правой кнопкой мыши по руту в IIS Manager’е — Properties — вкладка Service – далее Вы можете выбрать две опции:
      • Compress application files – включает сжатие динамических страниц, в которые по умолчанию входят asp, dll, и exe.
      • Compress static files – включает сжатие htm, html, и txt файлов (по умолчанию);

    В IIS Manager выделите сайте CRM – в представлении Feature View дважды щелкните кнопкой по Compression – отметьте галками Enable dynamic content compression и/или Enable static content compression для включения динамического (по умолчанию входят файлы asp, dll и exe) и/или статического (по умолчанию входят файлы htm, html и txt) контента сайта.

    Вы можете изменить список типов файлов, включенных в сжатие, откройте на редактирование файл C:\Windows\System32\inetsrv\config\applicationHost.config. Найдите секцию httpCompression и добавьте/удалите типы файлов подлежащие сжатию.

    Напрмер, чтобы включить сжатие файлов Word и Excel, добавьте такие строки в раздел :

    Чтобы изменения вступили в силу, необходимо перезапустить IIS.

    Web gardens (Web-сады)

    В IIS 6.0 Был добавлен новый режим обработки запросов, называемый режимом изоляции рабочих процессов (англ. worker process isolation mode). В этом режиме все веб-приложения, обслуживаемые сервером, работают в разных процессах, что повышает стабильность и безопасность системы. Кроме того, для приёма запросов HTTP был создан новый драйвер http.sys, который работает в режиме ядра, что ускоряет обработку каждого запроса.

    По умолчанию каждому пулу приложений (для обработки запросов) соответствует один рабочий процесс w3wp. Но в IIS 6.0 также появилась такая фишка как Web gardens. Благодаря ей, пул можно настроить так, чтобы ему (для обработки обслуживания запросов) соответствовал набор из N эквивалентных рабочих процессов, разделяющих нагрузку.

    Преимущества Web-садов в том, что, если один рабочий процесс замедляется, например, в случае постоянных долгих операций или, когда подсистема выполнения сценариев перестает отвечать, прием и обработка запросов продолжается остальными рабочими процессами. Единственным недостатком является увеличение потребляемой IIS’ом памяти (пропорцианально количеству процессов).

    Чтобы задействовать Web garden для CRM: В IIS менеджере выделите узел Application Pools — выделите пул CRMAppPool — щелкните Advance Setting — установите в секции Process Model необходимое значение Maximum Worker Process.

    TTL кэша IIS

    IIS кэшируют любые запрошенные объекты. У каждого объекта в пределах кэша есть время «жизни» (TTL) – время, в течение которого объект должен находиться в кэше и из которого IIS его достанет и выдаст, в случаи запроса. Что в результате значительно ускоряет работу веб-сервера. По умолчанию, значение TTL установлено в 30 секунд. Т.е. если объект в кэше не использовался в течение прошлых 30 секунд, то он удаляется.

    И тут у нас опять палка о двух концах: 30 секунд это много или мало? Если все страницы на Вашем сайте являются динамичными, то IIS действительно не извлечет большую выгоду из кэширования. Соответсвенно уменшив этот параметр Вы могли бы освободить память под другие нужды. С другой стороны, если у Вашего сервера много свободной памяти, и куча статичных страниц, то Вы можете улучшить эффективность работы, увеличив TTL.

    Чтобы изменить этот параметр откройте реестр. Далее в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters добавьте новый DWORD-ключ с именем ObjectCacheTTL и значением от 0 до 4 294 967 295 (это в секундах, где 0 – полное отсутствие кэширования).

    Трассировка и дебаггинг

    Для повышения производительности также можно отключить трассировку и дебаггинг (если они у Вас включены), с помощью конфигурациооных файлов machine.config (расположен в папке .Net Framework’а под которым выполняется пул приложений, например: C:\Windows\Microsoft.NET\Framework\vXXXX\Config\machine.config) и/или Web.config (находится внутри папки сайта CRM):

    Другие параметры

    Документ Optimizing and Maintaining Microsoft Dynamics CRM 4.0 также рекомендует использовать такие параметры для наcтройки IIS:

    Параметр Значение
    maxWorkerThreads 100
    maxIoThreads 100
    maxconnection 12*n (где n это число процессоров)
    minFreeThreads 88*n
    minLocalRequestFreeThreads 76*n
    minWorkerThreads 50

    Настраиваются эти параметры в файле C:\WINDOWS\Microsoft.NET\Framework\vXXXX\CONFIG\machine.config

    Примечание: Еесли у Вас есть hyperthreading, Вы должны использовать число логических центральных процессоров вместо физических. Т.е., если у Вас сервер с четырьмя процессорами, то значение N в формулах будет 8 вместо 4.

    Илон Маск рекомендует:  Безлимитный хостинг в России от компании SmartApe
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL