LoginSignup
0
0

More than 5 years have passed since last update.

SignalRのPerformance Counterを取得する

Posted at

SignalRには、SignalR用のパフォーマンスカウンタが用意されています
※SignalR、ざっくり言うとMicrosoftが開発しているリアルタイムwebを実現するためのオープンソースのライブラリです
 詳細はASP.NET SignalRASP.NET SignalRを知るを参照願います

Using SignalR performance counters
ここに記載のある手順で、SignalR用のパフォーマンスカウンタを追加することができます

実際に追加されるカウンタは以下のようなものです

image

で、これで簡単にカウンタ取得できるかと思いましたが、取得するまでに何個かはまったので共有します

その前にまずは結論

結論

アプリケーションプールの実行ユーザである[IIS APPPOOL\<アプリケーションプール名>]をPerformance Monitor Users グループに追加してマシン再起動
SignalR.exe ipcにてカウンタ追加後に上記を実施すればカウンタが取得できるようになります

以下、はまった事です

はまり1:カウンターの追加時、選択したオブジェクトのインスタンスに何も表示されない

上記の画像の以下の部分です
image

今は1つ表示されていますが、インストール直後は何も表示されない場合があります
その状態でカウンタの追加をしても、グラフに項目自体が追加されません

この場合は、
該当のアプリケーションプールを再起動してください
これで表示されました
それでも表示されない場合は、実際にアプリケーションを動かしてから確認すると表示されます

はまり2:インスタンスは表示されたが実際の値が全て「0」になる

インスタンス表示されるようになり、グラフも追加できたが実際の値が「0」になる現象が発生しました

image

実際にSignalRを使った処理も動かしているのに。。

この場合対応は以下の2つです

アプリケーションプールの実行ユーザをLocalSystemにに変更しアプリケーションプールを再起動

image

これは、以下の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 グループに追加出来ると楽なんですが、
ビルトインユーザグループをビルトインユーザグループに入れる事は出来ないようです
そのため、ユーザ個別に追加する必要があります

上記対応で表示されるようになりました
うまく値が取れないという場合は試してみてください

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0