Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

IIS 사이트 활성 사용자 세션 수 확인 방법: 성능 모니터부터 PowerShell까지

IIS 사이트의 현재 접속 세션 수를 확인해야 하는 이유

Windows Server 기반 웹 서버에서 IIS 사이트에 현재 연결된 사용자 세션(접속) 수를 빠르게 파악하는 방법을 소개합니다. 이러한 정보를 활용하면 서버 부하를 측정하고 예측할 수 있으며, 웹사이트 유지보수나 업데이트 작업에 가장 적합한 시간대를 선정하고, 사용자 수가 증가할 때 IIS 서버에 예상되는 부하까지 미리 가늠할 수 있습니다.

성능 모니터(Performance Monitor)로 활성 세션 수 확인하기

IIS 웹 사이트의 활성 사용자 세션 수를 확인하는 가장 간단한 방법은 Windows 성능 모니터(Performance Monitor)의 성능 카운터를 이용하는 것입니다.

perfmon 명령을 실행해 성능 모니터 콘솔을 연 뒤, 모니터링 도구 → 성능 모니터(Monitoring Tools → Performance Monitor) 섹션으로 이동합니다.

다음으로 모니터 창에 필요한 카운터를 추가해야 합니다. 기본적으로 전체 CPU 사용률 카운터가 표시되며, 불필요하다면 제거해도 됩니다. 새 카운터를 추가하려면 도구 모음에서 초록색 버튼(아래 스크린샷 참조)을 클릭하거나 키보드로 Ctrl+N을 누릅니다.

IIS 사이트 활성 사용자 세션 수 확인 방법: 성능 모니터부터 PowerShell까지

사용 가능한 카운터 목록에서 Web Service 그룹을 찾아 확장합니다. 이 범주에서 주목해야 할 카운터는 다음 세 가지입니다.

  • Current Anonymous Users – 익명으로 접속 중인 IIS 사용자 수
  • Current Non-Anonymous Users – 인증(로그인)된 IIS 사용자 수
  • Current Connections – IIS 서버의 전체 활성 연결 수

원하는 카운터를 선택한 후 선택한 개체의 인스턴스(Instances of selected objects) 영역에서 연결 정보를 표시할 IIS 웹 사이트를 하나 이상 선택합니다. 서버의 모든 웹 사이트 사용자 정보는 _Total 인스턴스에 저장됩니다. 이제 Add >> 버튼을 클릭해 해당 카운터를 오른쪽 창의 추가 목록으로 옮기면 됩니다.

IIS 사이트 활성 사용자 세션 수 확인 방법: 성능 모니터부터 PowerShell까지

같은 방식으로 필요한 모든 카운터를 추가한 뒤 OK를 클릭합니다.

IIS 사이트 활성 사용자 세션 수 확인 방법: 성능 모니터부터 PowerShell까지

이제 성능 모니터 콘솔에서 사용자 세션 수가 실시간으로 표시됩니다(기본값은 꺾은선 그래프 형태). 하단 창에서 특정 카운터를 선택하면 지정된 기간 동안의 최근 값, 평균값, 최소값, 최대값을 확인할 수 있습니다.

또한 자체 성능 카운터를 이 콘솔에 추가하고 별도의 보기로 저장해 두면, 나중에 웹 서버 부하 데이터를 빠르게 조회할 때 유용하게 재사용할 수 있습니다.

PowerShell로 IIS 성능 카운터 조회하기

IIS 성능 카운터는 PowerShell에서도 확인할 수 있으며, 이때 Get-Counter cmdlet을 사용합니다. 사용 가능한 모든 Web Service 성능 카운터 목록은 아래 명령으로 출력할 수 있습니다.

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

IIS 사이트 활성 사용자 세션 수 확인 방법: 성능 모니터부터 PowerShell까지

IIS 서버의 현재 활성 연결 수(\Web Service(*)\Current Connections)를 확인하려면 다음 명령을 실행합니다.

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

실행 결과에서 IIS 서버 전체 연결 수와 함께 사이트별 통계도 함께 반환되는 것을 확인할 수 있습니다.

팁:

  • 여러 카운터 값을 한 번에 표시하려면 쉼표로 구분하여 지정하면 됩니다.
  • -Continuous 옵션을 사용하면 CTRL+C로 중단할 때까지 카운터 값이 콘솔에 계속 표시됩니다.

특정 IIS 사이트의 세션 수 조회

특정 IIS 사이트의 활성 세션 수만 가져올 수도 있습니다. 예를 들어 Site1이라는 이름의 사이트에서 현재 연결 수를 확인하려면 다음 명령을 실행합니다.

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

-ComputerName 매개변수로 카운터 값을 조회할 서버 이름을 지정할 수 있습니다. 단, 로컬 서버에서 사이트 연결 수를 확인할 때는 localhost를 지정할 수 없습니다.

IIS 사이트 활성 사용자 세션 수 확인 방법: 성능 모니터부터 PowerShell까지
매번 서버 이름을 직접 입력하지 않으려면 COMPUTERNAME 환경 변수를 활용하면 편리합니다.

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

IIS 웹 서버 전체의 "current connections" 카운터 숫자 값(IIS 총 사용자 수)을 얻으려면 다음 명령을 사용합니다.

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

카운터 값 검증: 테스트 세션 생성하기

간단한 스크립트로 사이트에 여러 개의 추가 세션을 만들어 카운터 값이 어떻게 변하는지 확인해 보겠습니다. Invoke-WebRequest cmdlet을 사용해 IIS 웹 사이트의 연결 수를 늘리거나, 브라우저 창을 여러 개 열어 테스트할 수도 있습니다.

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

스크립트 실행 후 current connections 카운터 값을 다시 조회해 값이 증가했는지 점검합니다.

여러 IIS 사이트의 연결 수를 표 형태로 확인하기

서버에서 여러 IIS 사이트가 운영 중이고 각 사이트의 연결 수를 표 형태로 한눈에 확인하고 싶다면 아래 스크립트를 사용할 수 있습니다. PowerShell에서 IIS 데이터를 가져오려면 먼저 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 사이트 활성 사용자 세션 수 확인 방법: 성능 모니터부터 PowerShell까지

모든 사이트의 연결 카운터 숫자 값만 간단히 표시할 수도 있습니다(첫 번째 값은 IIS 전체 연결 수입니다).

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

IIS 사이트 활성 사용자 세션 수 확인 방법: 성능 모니터부터 PowerShell까지

또한 Web service(sitename)\Bytes Received/secWeb service(sitename)\Bytes Sent/sec 카운터를 사용하면 사이트별 또는 웹 서버 전체의 초당 송수신 데이터량 정보를 확인할 수 있습니다.

마무리

지금까지 IIS 웹 서버에서 운영 중인 사이트의 부하 정보를 확인하는 방법을 살펴보았습니다. 성능 모니터의 그래픽 인터페이스와 PowerShell의 자동화 기능을 적절히 조합하면 서버 상태를 실시간으로 모니터링하고, 계획적인 유지보수 일정을 수립하는 데 큰 도움을 받을 수 있습니다.