Exchange Server 2013 – считаем количество подключений к серверу


При настройке балансировщика возникли проблемы с настройками его производительности –  настройка балансировщика, как говорится, другая история, но это породило частную задачу: определить число коннектов (подключений), которые создают клиенты Outlook к серверам CAS.

Для решения задачи можно поискать подходящие счётчики производительности – это первое, что приходит в голову. Либо использовать какую-либо утилиту.

Но есть еще один способ. Outlook использует подключение к серверу по протоколу OutlookAnyware, который работает поверх HTTPS. Поэтому можно просто подсчитать число подключений к серверу по порту 443. Если вы не запускаете никаких оснасток управления, которые подключаются к серверу Exchange по порту 443, то результат подсчёта будет достаточно точным. Сравнение со счётчиком производительности показало, что количество подключений по порту 443 превышает значение полученное из счётчика, но ненамного. Можно ещё учесть и отфильтровать подключения между серверами, но в данной конкретной ситуации это для меня не играло никакой роли.

Самый привычный способ подсчитать число TCP сессий (подключений) это команда netstat. Результат можно распарсить и обработать. И хочется сделать это в Powershell. Готовый скрипт уже есть в билиотеке Get-NetworkStat​istics — netstat -ano with filtering.

Мне же этот скрипт не пригодился, т.к. в Windows Server 2012/R2 есть командлет Get-NetTCPConnection, который реализует необходимую нам часть функциональности команды netstat.

Подсчёт количества подключений:

(Get-NetTCPConnection -State Established -LocalAddress «10.30.30.30» -LocalPort 443).count

 

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

Теперь хочется большего: давайте подсчитаем число клиентов, число подключений и среднее число подключений на одного клиента:

Get-NetTCPConnection -State Established -LocalAddress «10.30.30.30» -LocalPort 443 | Group-Object -Property RemoteAddress | Measure-Object -Property Count -Average -Sum

 

Получаем примерно такой результат:

Count    : 163

Average  : 1.99386503067485

Sum      : 325

Maximum  :

Minimum  :

Property : Count

 

Давайте ещё продвинемся: CAS серверов может быть несколько, и выполнять запрос локально на каждом не очень удобно. Поэтому сделаем это удаленно:

$s= «cas1»,«cas2»,«cas3» | % {New-CimSession $_}

 

$conn = $s | % { Get-NetTCPConnection -CimSession $_ -State Established -LocalPort 443 | Group-Object -Property RemoteAddress | Measure-Object -Property Count -Average -Sum }

 

$s | % { Remove-CimSession $_ }

 

 

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

 

$conn | Measure-Object -Property Count -Sum

$conn | Measure-Object -Property Sum -Sum

 

 

 

Полученные результаты помогли мне объективно оценить нагрузку на балансировщик.

 

 

Реклама

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

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

Логотип WordPress.com

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

Фотография Twitter

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

Фотография Facebook

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

Google+ photo

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

Connecting to %s

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