Як оцінити відвідуваність (кількість користувачів) на сайті IIS

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

Найпростіше визначити кількість активних сесією користувачів на веб сайті IIS за допомогою лічильників продуктивності в моніторі продуктивності Windows (Performance Monitor).

Відкрийте консоль Performance Monitor, виконавши команду perfmon і перейдіть в консоль монітора продуктивності (Monitoring Tools -> Performance Monitor).

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

У списку доступних категорій лічильників знайдемо і розгорнемо групу Web Service. У цій категорії нас цікавлять три лічильника:

  • Current Anonymous Users - кількість анонімних користувачів IIS;
  • Current Non-Anonymous Users - кількість авторизованих (неанонімних) користувачів IIS;
  • Current Connections - загальне число активних підключень на сервері IIS.

Виберемо потрібний лічильник і в поле примірників лічильника (Instances of selected objects) виберемо один або кілька сайтів IIS, для яких потрібно відобразити інформацію про підключення. Інформація по користувачам всіх сайтів на сервері міститься в екземплярі _Total. Залишилося натиснути кнопку Add >>, щоб потрібний лічильник перемістився в список додаються лічильників в правому вікні.

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

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

У поточну консоль можна додати власні лічильники продуктивності і зберегти їх в окремому поданні, яке в подальшому можна використовувати для швидкого доступу до інформації про навантаження на веб-сервер.

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

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

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

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

Get-Counter -Counter "\ Web Service (*) \ Current Connections"

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

Порада.

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

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

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

Щоб не вказувати кожен раз ім'я сервера, можна використовувати змінну оточення 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

Також ви можете вивести числові значення лічильників підключень по всіх сайтах так (перше значення - сумарна кількість підключень до IIS):

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

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

Отже, ми розглянули методику, що дозволяє отримати інформацію про навантаження на сайти, запущені на веб сервері IIS.