SignalRには、SignalR用のパフォーマンスカウンタが用意されています
※SignalR、ざっくり言うとMicrosoftが開発しているリアルタイムwebを実現するためのオープンソースのライブラリです
詳細はASP.NET SignalRやASP.NET SignalRを知るを参照願います
Using SignalR performance counters
ここに記載のある手順で、SignalR用のパフォーマンスカウンタを追加することができます
実際に追加されるカウンタは以下のようなものです
で、これで簡単にカウンタ取得できるかと思いましたが、取得するまでに何個かはまったので共有します
その前にまずは結論
結論
アプリケーションプールの実行ユーザである[IIS APPPOOL\<アプリケーションプール名>]をPerformance Monitor Users グループに追加してマシン再起動
SignalR.exe ipc
にてカウンタ追加後に上記を実施すればカウンタが取得できるようになります
以下、はまった事です
はまり1:カウンターの追加時、選択したオブジェクトのインスタンスに何も表示されない
今は1つ表示されていますが、インストール直後は何も表示されない場合があります
その状態でカウンタの追加をしても、グラフに項目自体が追加されません
この場合は、
該当のアプリケーションプールを再起動してください
これで表示されました
それでも表示されない場合は、実際にアプリケーションを動かしてから確認すると表示されます
はまり2:インスタンスは表示されたが実際の値が全て「0」になる
インスタンス表示されるようになり、グラフも追加できたが実際の値が「0」になる現象が発生しました
実際にSignalRを使った処理も動かしているのに。。
この場合対応は以下の2つです
アプリケーションプールの実行ユーザをLocalSystemに
に変更しアプリケーションプールを再起動
これは、以下のstackoverflowにも記載されていました
実際に試して確かに値取得できるようになりました
SignalR Performance counter not displaying in the performance monitor
ただLocalSystem
だと権限が大きく問題発生時の影響が怖いので、冒頭に記載した
アプリケーションプールの実行ユーザであるIIS APPPOOL\<アプリケーションプール名>をPerformance Monitor Users グループに追加してマシン再起動
の方が影響範囲小さくて済むので良いと思います
IISの再起動ではだめで、マシン再起動まで必要だったのがポイントで権限追加したのにダメだーってなってはまってました
※IIS APPPOOL\<アプリケーションプール名>のユーザは、IIS_IUSRSグループに所属しています
そのため、IIS_IUSRSグループをPerformance Monitor Users グループに追加出来ると楽なんですが、
ビルトインユーザグループをビルトインユーザグループに入れる事は出来ないようです
そのため、ユーザ個別に追加する必要があります
上記対応で表示されるようになりました
うまく値が取れないという場合は試してみてください