Windows Server에서 실행되는 웹 서버의 IIS 사이트에 대한 현재 사용자 연결(세션) 수를 빠르게 추정하는 방법은 무엇입니까? 이러한 정보를 통해 서버의 부하를 결정 및 예측하고, 웹 사이트의 유지 관리 및 업데이트에 가장 적합한 시간을 선택하고, 사용자 수가 증가할 때 IIS 서버의 부하를 예측할 수 있습니다.
IIS 웹 사이트의 활성 사용자 세션 수를 확인하는 가장 쉬운 방법은 Windows 성능 모니터의 성능 카운터를 사용하는 것입니다. .
perfmon을 실행하여 성능 모니터 콘솔을 엽니다. 명령을 실행하고 성능 모니터 섹션(모니터링 도구 —> 성능 모니터 ).
그런 다음 모니터 창에 필요한 카운터를 추가해야 합니다(기본적으로 총 CPU 사용량 카운터가 표시되지만 제거할 수 있음). 새 카운터를 추가하려면 도구 모음에서 녹색 버튼(스크린샷에서 볼 수 있음)을 클릭하거나 Ctrl+N을 누르십시오. 키보드에서.
사용 가능한 카운터 목록에서 웹 서비스를 찾아 확장합니다. 그룹. 이 범주에서는 세 가지 카운터에 관심이 있습니다.
- 현재 익명 사용자 – 익명의 IIS 사용자 수
- 현재 비익명 사용자 – 승인된 IIS 사용자 수
- 현재 연결 – IIS 서버의 총 활성 연결 수.
원하는 카운터를 선택하고 선택한 개체의 인스턴스에서 연결 정보를 표시할 하나 이상의 IIS 웹 사이트를 선택합니다. 서버에 있는 모든 웹사이트의 사용자에 대한 정보는 _Total 에 저장됩니다. 사례. 이제 추가만 클릭하면 됩니다. >> 버튼을 눌러 카운터를 오른쪽 창에 추가할 카운터 목록으로 이동합니다.
필요한 모든 카운터를 같은 방식으로 추가하고 확인을 클릭합니다.
이제 Performance Manager 콘솔의 사용자 세션 수에 대한 정보가 실시간으로 표시됩니다(기본적으로 카운터 값은 선형 그래프로 표시됨). 하단 창에서 카운터 중 하나를 선택하면 지정된 기간 동안의 마지막, 평균, 최소 또는 최대 값을 볼 수 있습니다.
이 콘솔에 사용자 지정 성능 카운터를 추가하고 나중에 웹 서버 로드 데이터에 빠르게 액세스하는 데 사용할 수 있는 별도의 보기에 저장할 수 있습니다.
PowerShell에서 IIS 성능 카운터에 액세스할 수 있습니다. 이렇게 하려면 Get-Counter cmdlet을 사용할 수 있습니다. 사용 가능한 모든 웹 서비스 성능 카운터 목록은 다음과 같이 표시될 수 있습니다.
(Get-Counter -ListSet 'Web Service').counter
IIS 서버의 현재 활성 연결 수(\Web Service(*)\Current Connections 카운터)에 대한 정보를 얻으려면 다음 명령을 사용하십시오.
Get-Counter -Counter “\Web Service(*)\Current Connections”
보시다시피 이 명령은 IIS 서버에 대한 총 연결 수와 각 사이트에 대한 통계를 모두 반환했습니다.
팁.- 쉼표로 구분하여 지정하면 여러 카운터의 값을 표시할 수 있습니다.
- –연속 옵션에서 카운터 값에 대한 정보는 CTRL+C를 사용하여 중단할 때까지 콘솔에 계속 표시됩니다.
특정 IIS 사이트에 대한 활성 세션 수를 얻을 수 있습니다. 예를 들어, Site1이라는 사이트의 현재 연결 수를 얻으려면 다음 명령을 실행하십시오.
Get-Counter "web service(Site1)\current connections" -ComputerName web-srv01
카운터 값을 확인할 서버의 이름을 지정할 수 있습니다. 사이트에서 로컬로 연결 수를 확인할 때 localhost 지정은 허용되지 않습니다.
매번 서버 이름을 지정하지 않으려면 환경 변수 COMPUTERNAME을 사용할 수 있습니다.
Get-Counter "web service(Site1)\current connections" -ComputerName $env:COMPUTERNAME
전체 IIS 웹 서버(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
}
현재 연결 카운터의 값을 확인하고 증가하는지 확인하십시오.
여러 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 웹 서버에서 실행되는 사이트의 부하에 대한 정보를 얻는 방법을 살펴보았습니다.