Как оценить посещаемость (количество пользователей) на сайте IIS

Как оценить посещаемость (количество пользователей) на сайте IIS

Как быстро оценить текущее количество подключений пользователей к сайтам на веб сервере IIS, работающем на Windows Server? Подобная информация позволит точнее оценить и спрогнозировать нагрузку на сервер, выбрать оптимальное время для проведения обслуживания и обновления сайта, спрогнозировать нагрузку на сервер при увеличении количества пользователей.

Проще всего определить количество активных сессией пользователей на веб сайте IIS при помощи счетчиков производительности в мониторе производительности Windows (Performance Monitor).

Откройте консоль Performance Monitor, выполнив команду perfmon и перейдите в консоль монитора производительности (Monitoring Tools —> Performance Monitor).

Далее нужно добавить в окно монитора необходимые нам счетчики (по умолчанию в окне отображается счетчик общей загрузки CPU — его можно удалить). Чтобы добавить новый счетчик, нажмите зеленую кнопку в панели инструментов (на скриншоте она выделена) или нажмите комбинацию клавиш Ctrl+N.

perfmon - консоль монитора производительности

В списке доступных категорий счетчиков найдем и развернем группу Web Service. В этой категории нас интересуют три счетчика:

  • Current Anonymous Users – количество анонимных пользователей IIS;
  • Current Non-Anonymous Users – количество авторизованных (неанонимных) пользователей IIS;
  • Current Connections – общее число активных подключений на сервере IIS.

Выберем нужный счетчик и в поле экземпляров счетчика (Instances of selected objects) выберем один или несколько сайтов IIS, для которых нужно отобразить информацию о подключениях. Информация по пользователям всех сайтов на сервере содержится в экземпляре _Total. Осталось нажать кнопку Add >>, чтобы нужный счетчик переместился в список добавляемых счетчиков в правом окне.

счетчики производительности IIS

Точно так же добавим все необходимые счетчики и нажмем ОК.

счетчики со статичтикой подключения к сайтам iis

Теперь в консоли Performance Monitor в режиме реального времени будет отображаться информация о количестве активных подключений (сессий) пользователей на веб сервере/сайте IIS (по умолчанию значения счетчиков выводятся в виде линейных графиков). Выбрав в нижней панели любой из счетчиков можно посмотреть его текущее (last), среднее (average), минимальное (minimum) и максимальное (maximum) значение за данный период времени.

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

Доступ к данным счетчиков производительности для сайтов IIS можно получить и из PowerShell. Для этого достаточно использовать командлет получения данных из счетчика производительности Get-Counter.

Список всех доступных счетчиков производительности для службы Web Service можно вывести так:

(Get-Counter -ListSet 'Web Service').counter

Get-Counter - список всех счетчиков IIS

Чтобы получить информацию о текущем количестве активных подключений на сервере IIS (счетчик Web Service(*)Current Connections) воспользуйтесь такой командой:

Get-Counter -Counter “Web Service(*)Current Connections”

iis-Get-Counter Connections сколько пользователей сейчас подключено к iis

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

Совет.
  • Значения нескольких счетчиков можно вывести, указав их через запятую;
  • С ключем Continuous информация о значении счетчика будет выводится в консоль постоянно, пока не будет выполнено прерывание командой CTRL+C.

Как мы уже говорили, можно получить количество активных сессии для конкретного сайта IIS. Например, чтобы получить текущее количество соединений на сайте с именем Site1, выполните команду (вы можете указать имя сервера, на котором проверяется значение счетчика, при проверке количества подключений на сайте локально, указывать localhost недопустимо):

Get-Counter "web service(Site1)current connections" -ComputerName web-app01

количество подключений к сайту IIS в powershell

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

Get-Counter "web service(Site1)current connections" -ComputerName $env:COMPUTERNAME

Для получения числового значения счетчика «current connections» всего веб-сервера IIS (суммарная нагрузка на IIS) можно использовать такой код:

((Get-Counter -Counter 'web service(_total)current connections' -computer $env:COMPUTERNAME) |     Select-Object -Expand countersamples).Cookedvalue

Попробуем с помощью простого скрипта создать несколько дополнительных сессии с нашим сайтом и проверить значение счетчика. Можно накрутить количество обращений к IIS с помощью с помощью командлета Invoke-WebRequest, а можно просто открыть несколько окон (отдельных процессов) в браузере:

$counter = 20
for($i=1;$i -le $counter;$i++){
$SiteAdress = "http://localhost:9666/"
Start-Process $SiteAdress
}

После этого проверьте значение счетчика current connections и убедитесь, что он увеличиться.

Если на сервере запушено несколько сайтов IIS, и нужно получить количество подключений к каждому из них в табличном виде, можно воспользоваться таким скриптом (для получения данных из IIS в PowerShell нужно загрузить модуль WebAdministration):

import-module webadministration
function get-CurrentConnection($Site) {
Get-Counter "web service($Site)current connections,web service($Site) Bytes Received/sec,web service($Site)Bytes Sent/sec" -ComputerName $env:COMPUTERNAME
}
$IISsites = dir IIS:Sites | Select Name
$CurrentConnection = @()
foreach ($site in $IISsites)
{
Write-Host $site
$ConnCount = New-Object psobject | get-CurrentConnection -Site $site.name
$CurrentConnection += $ConnCount
}
$CurrentConnection|out-gridview

powershell скрипт получения статистики пользоватлей на веб сервере iis

Также вы можете вывести числовые значения счетчиков подключений по всем сайтам так (первое значение – суммарное количество подключений к IIS):

Get-wmiObject -class Win32_PerfRawData_W3SVC_WebService | select-object -expand currentconnections

Get-wmiObject W3SVC_WebService currentconnections

Также вы можете отобразить информацию о количество полученных/переданных данных для каждого сайта или всего веб сервера с помощь счетчиков web service(sitename) Bytes Received/sec и web service(sitename)Bytes Sent/sec».

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

Windows Server 2012 R2
Как оценить посещаемость (количество пользователей) на сайте IIS