【Perfmon】RDSユーザーごとの帯域幅使用状況を監視・特定する方法
はじめに:RDPセッションの帯域幅をユーザー単位で特定したい理由
当社のネットワークでは、Windows Server 2012 R2 をベースにリモートデスクトップサービス(RDS)ロールを構成した複数のターミナルサーバーが稼働しており、支店や地方拠点から多数のユーザーが接続しています。その中で、どのターミナルユーザーのセッションが大量のトラフィックを発生させ、WAN回線に負荷をかけているのかを特定する必要が生じました。おそらく該当ユーザーは、RDPセッション内で大容量ファイルのアップロードやダウンロードを頻繁に行っているか、Easy Print 経由で大きなドキュメントを印刷送信しているものと考えられます。
ただし、PCとRDPサーバー間のファイル転送や Easy Print による印刷を完全に禁止することはできません。業務上これらの機能が必要だからです。そこで解決策として、データ転送が活発なユーザーを特定し、個別にヒアリング・相談を行ったうえで、RDPセッション中の大容量データ転送を最小限に抑えられるよう業務の進め方を見直してもらうことにしました。
RDPセッション別の帯域幅データを取得する2つの方法
Microsoftは、ユーザーごとのRDPセッションの帯域幅使用状況データへアクセスする手段として、「パフォーマンスカウンター」と「RDS API」の2つを提供しています。RDS APIを利用した既製のソリューションは見つけられなかったため、今回はパフォーマンスカウンターを採用しました。いくつかのカウンターを実際に試した結果、目的に合致するカウンターを見つけることができました。
Performance MonitorでRemoteFX Networkカウンターを追加する
パフォーマンスモニター(perfmon.exe)を開き、カウンター「RemoteFX Network / Total Sent Rate(*)」を追加します。このカウンターは、ターミナルサーバーの送信トラフィック(B/s)を計測します。

セッション数が多く折れ線グラフでは見づらい場合は、[グラフ]タブで表示形式を[ヒストグラムバー]に変更すると視認性が大きく向上します。縦軸のスケール値は、たとえば100KB/s(100000)に設定しておくとよいでしょう。

棒グラフの最大値に着目することで、最も大量のデータを送信しているRDPセッション番号を特定できます。

セッション番号とユーザー名の対応付け(qwinsta.exe)
RDPセッション番号だけでは誰のセッションかわからないため、qwinsta.exeコマンドを実行して、セッション番号とユーザー名を突き合わせます。

補足:受信トラフィック(ユーザー側からのアップロード)を評価する場合も手順は同じです。「RemoteFX Network / Total Received Rate(*)」カウンターを追加して、受信レートを確認してください。
日次・週次でのトラフィック計測(データコレクターセット)
1日または1週間といった一定期間のトラフィックを評価したい場合は、ユーザーRDPセッションの送受信トラフィックを継続的に記録する専用のデータコレクターセットを作成しておくと便利です。あとからログを分析すれば、時間帯別の傾向やピーク時の負荷も把握できます。
Windows Server 2008 R2の場合の代替カウンター
Windows Server 2008 R2には前述のRemoteFX Network系カウンターが存在しません。その場合は、Terminal Services Sessionグループの「Output Bytes」「Input Bytes」カウンターを使用することで、セッショントラフィックのおおよその値を把握できます。

取得データの活用方法
こうして収集したデータは、トラブル対応だけでなくキャパシティプランニングにも役立ちます。遠隔地の支店(サイト)との通信回線に必要な帯域幅を算出する際、RDSクライアント1セッションあたりの平均帯域幅を求める材料として活用できます。実測値に基づいて回線増強や運用ルールの見直しを判断することで、WAN回線の負荷を効率的に抑制できるでしょう。
-
WindowsでRDP/RDSセッションの制限(タイムアウト)を構成する方法
切断されたRDP/RDSセッションの問題点 既定では、ユーザーがターミナルクライアント(mstsc.exe、RDCMan、Remote Desktop HTML5 Webクライアントなど)の右上にある「×」ボタンをクリックしてRDP/RDSセッションウィンドウを閉じると(ログオフ操作を行わずに)、そのセッションは切断済み(disconnected)状態になります。この状態でも、リモートデスクトップサーバー上ではアプリケーションや開いているファイル、ウィンドウが実行され続け、サーバーリソースを消費し続けます。 Windowsでは、ユーザーのRDPセッションは、ユーザー自身または管理者によって終了
-
管理者権限のないユーザーにSCManagerへのリモートアクセスを許可する方法
ローカル管理者権限を持たないドメインユーザーや監視システムに対して、リモートサーバー上で稼働しているサービスの一覧を取得できるようリモートアクセス権限を付与する方法を解説します。このタスクの本質は、Service Control Manager(SCManager)へのリモート接続を許可することにあります。 発生する問題 例えば、リモートユーザーや監視システムに、特定のサーバー上のサービス状態を照会させたいとします。当然ながら、このリモートユーザーには管理者権限も、サーバーへローカルログオンする権限もありません。 services.mscコンソールを使ってリモートコンピューターのサービス一覧を