IISサイトのアクティブなユーザーセッション数を確認する方法|パフォーマンスモニターとPowerShellでの手順
Windows Server上で稼働しているWebサーバーのIISサイトに対して、現在どれだけのユーザー接続(セッション)が発生しているかを素早く把握できれば、サーバーへの負荷の把握と予測、Webサイトのメンテナンスやアップデートの最適なタイミング選定、利用者数増加時のIISサーバーの負荷予測などに役立ちます。本記事では、パフォーマンスモニターとPowerShellを使ってアクティブなセッション数を確認する具体的な方法を解説します。
パフォーマンスモニターでアクティブセッション数を確認する
IIS Webサイトのアクティブなユーザーセッション数を調べる最も簡単な方法は、Windowsのパフォーマンスモニター(Performance Monitor)のパフォーマンスカウンターを利用することです。
perfmonコマンドを実行してパフォーマンスモニターコンソールを開き、「監視ツール → パフォーマンスモニター」セクションへ移動します。
次に、監視ウィンドウに必要なカウンターを追加します(デフォルトではCPU使用率の合計カウンターが表示されていますが、不要なら削除して構いません)。新しいカウンターを追加するには、ツールバーの緑色のボタン(スクリーンショット参照)をクリックするか、キーボードのCtrl+Nを押します。

注目すべき3つの主要カウンター
利用可能なカウンターの一覧から「Web Service」グループを見つけて展開します。このカテゴリで重要なのは、以下の3つのカウンターです。
- Current Anonymous Users(現在の匿名ユーザー数) – IISの匿名ユーザー数
- Current Non-Anonymous Users(現在の非匿名ユーザー数) – 認証済みIISユーザー数
- Current Connections(現在の接続数) – IISサーバー上のアクティブな接続の合計数
目的のカウンターを選択し、「選択したオブジェクトのインスタンス」から接続情報を表示したい1つ以上のIISサイトを選びます。サーバー上のすべてのサイトの合計値は_Totalインスタンスに格納されています。あとは「Add >>」ボタンをクリックして、右側ペインの追加対象カウンター一覧に移動させるだけです。

同じ手順で必要なカウンターをすべて追加し、「OK」をクリックします。

これで、パフォーマンスモニターコンソール上にユーザーセッション数の情報がリアルタイムで表示されるようになります(デフォルトではカウンターの値は折れ線グラフとして描画されます)。下部ペインで任意のカウンターを選択すれば、指定期間における最新値・平均値・最小値・最大値も確認できます。
さらに、独自のパフォーマンスカウンターをこのコンソールに追加して個別のビューとして保存しておけば、後からワンクリックでWebサーバーの負荷データへアクセスできるようになり、日常的な監視業務の効率が大きく向上します。
PowerShellでIISのパフォーマンスカウンターを取得する
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サイトのアクティブセッション数を取得する
特定のIISサイトだけのアクティブセッション数を取得することもできます。たとえば、「Site1」という名前のサイトの現在の接続数を取得するには、次のコマンドを実行します。
Get-Counter "web service(Site1)\current connections" -ComputerName web-srv01
-ComputerNameパラメーターで、カウンター値を確認するサーバー名を指定できます。なお、ローカル環境でサイトの接続数を確認する場合、localhostの指定は許可されていない点に注意してください。

毎回サーバー名を入力しなくても済むよう、環境変数COMPUTERNAMEを利用すると便利です。
Get-Counter "web service(Site1)\current connections" -ComputerName $env:COMPUTERNAME
IIS Webサーバー全体の「current connections」カウンターの数値(IIS上の合計ユーザー数)を取得するには、次のコマンドを使用します。
((Get-Counter -Counter 'web service(_total)\current connections' -computer $env:COMPUTERNAME) | Select-Object -Expand countersamples).Cookedvalue
スクリプトでカウンターの動作を検証してみる
簡単なスクリプトを使って、意図的に複数のセッションを発生させ、カウンターの値がどう変化するか確認してみましょう。Invoke-WebRequestコマンドレットでIISサイトへの接続数を増やすこともできますし、単純にブラウザーで複数のウィンドウを開くだけでも構いません。
$counter = 20
for($i=1;$i -le $counter;$i++){
$SiteAdress = "https://localhost:9666/"
Start-Process $SiteAdress
}
その後、current connectionsカウンターの値をチェックし、実際に数値が増加していることを確認してください。
複数サイトの接続数を表形式で一覧表示する
サーバー上で複数の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全体への接続総数となります)。
Get-wmiObject -class Win32_PerfRawData_W3SVC_WebService | select-object -expand currentconnections

さらに、Web service(sitename)\Bytes Received/secおよびWeb service(sitename)\Bytes Sent/secカウンターを使用すれば、サイトごと、あるいはWebサーバー全体の送受信データ量に関する情報も表示できます。
まとめ
本記事では、IIS Webサーバー上で稼働するサイトの負荷状況に関する情報を取得する方法をご紹介しました。GUIベースのパフォーマンスモニターによるリアルタイム監視と、PowerShellによる自動化・スクリプト化を組み合わせることで、サーバー負荷の傾向分析やキャパシティプランニングまで幅広く対応できます。ぜひ日々の運用管理に役立ててください。
-
Discordでユーザーを通報する方法【PC・スマホ完全ガイド】
Discordは、世界中のゲーマーの間で最も人気のあるプラットフォームの一つに成長しました。しかし、ユーザー数が膨大である分、不正な行為を行うユーザーや、Discordの利用規約に違反するユーザーに出会ってしまう可能性もあります。そのためにDiscordには通報(レポート)機能が用意されており、攻撃的・不適切なコンテンツを投稿するユーザーを報告できるようになっています。ソーシャルメディア上での通報は、プラットフォームの健全性を保つために今や一般的な手段となっています。 通報自体はシンプルな操作ですが、ITに不慣れな方にとっては少し難しく感じられることもあるでしょう。この記事では、デスクトップP
-
Active Directoryでユーザーの最終ログイン日時を確認する2つの方法
Active Directory上のユーザーが最後にログインした日時を確認したい場合は、本チュートリアルをご活用ください。ここでは、ADユーザーの最終ログイン時刻を調べるための2つの方法(GUI操作とPowerShell)をわかりやすく解説します。ADユーザーが任意のワークステーションからActive Directoryにログオンするたびに、システムはその日時をlastLogon属性およびlastLogonTimestamp属性に記録します。このうち、より正確なのはlastLogon属性です。この属性には、特定のドメインコントローラー(DC)が認証した直近のログオン情報が反映されます。※補足: