none
ASP.net でメモリとCPU使用率取得 RRS feed

  • 質問

  • お世話になります。
    ASP.net(VB)でメモリとCPU使用率取得の方法が知りたいです。

    windows Form アプリにには、よくPerformanceCounter を使用したり、Timerなどで取得していますが、ASP.netではどう取得すればいいのかうまくいきません。

    教えていただければ幸いです。

    変な質問ですいません。


    tomotomody
    2009年4月9日 22:10

回答

  • クライアント側のメモリやCPU使用率を取得したいと言うことですか?
    そうだとすると実現の可能性は低いか、ないかのどちらかだと思えます。
    (基本的にC#やVB.NETで書いたコードが動くのはサーバー側です)

    ところで、取得できたとして、その情報を定期的にポストバックするつもりですか?
    1秒ごとに取得・ポストバックし続けるような仕組みだと使いづらいものになるかと思いますが…。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク sk7474 2009年4月23日 4:28
    2009年4月9日 22:50

  • ところで、取得できたとして、その情報を定期的にポストバックするつもりですか?
    1秒ごとに取得・ポストバックし続けるような仕組みだと使いづらいものになるかと思いますが…。
    さらに、サーバー側がクラスター構成だった場合の対応について、考慮が必要ではないかと。

    Jitta@わんくま同盟
    • 回答としてマーク sk7474 2009年4月23日 4:28
    2009年4月10日 2:45
  • お世話になります。
    ASP.net(VB)でメモリとCPU使用率取得の方法が知りたいです。

    windows Form アプリにには、よくPerformanceCounter を使用したり、Timerなどで取得していますが、ASP.netではどう取得すればいいのかうまくいきません。

    教えていただければ幸いです。

    変な質問ですいません。


    tomotomody

     サーバーの情報を取得するのですか? それともクライアントの情報を取得するのですか?
     もしサーバーの情報であれば、画面の更新については、Ajaxを使えばポストパックは使わなくてもできそうです。
     (AjaxにTimerコントロールがあったはず)
    • 回答としてマーク sk7474 2009年4月23日 4:28
    2009年4月10日 5:35
  • > Windows アプリで実行できたのを元に作成しましたASP.netのコードです。

    本当に Windows アプリで実行できたのでしょうか? そのコードを Windows アプリの Form_Load で実行し
    て、期待する結果が得られます?

    > どうも0.00% 0MBと表示されてしまう・・・

    VS2008 ドキュメント([ヘルプ]→[検索(S)]で表示されるもの)の PerformanceCounter.NextValue メソ
    ッドの解説によると、

    "カウンタの計算される値が 2 回のカウンタ読み取りに依存する場合、最初の読み取り操作では 0.0 が返され
    ます。パフォーマンス カウンタのプロパティをリセットして別のカウンタを指定するのは、新しいパフォーマ
    ンス カウンタを作成するのと同じです。新しいプロパティを使用する最初の読み取り操作では、同様に 0.0 が
    返されます。NextValue メソッドの呼び出しの間隔として推奨される値は 1 秒です。この秒数の遅延後にカウ
    ンタが次のインクリメンタル読み取りを実行できます。"

    とのことなので、CPU 使用率の方が 0.00% になるのはそのせいだと思います。

    メモリ使用量(?)の方が 0MB になるのはコードに問題がある(間違っている)からでしょう。

    • 回答としてマーク sk7474 2009年4月23日 4:28
    2009年4月11日 3:27

すべての返信

  • クライアント側のメモリやCPU使用率を取得したいと言うことですか?
    そうだとすると実現の可能性は低いか、ないかのどちらかだと思えます。
    (基本的にC#やVB.NETで書いたコードが動くのはサーバー側です)

    ところで、取得できたとして、その情報を定期的にポストバックするつもりですか?
    1秒ごとに取得・ポストバックし続けるような仕組みだと使いづらいものになるかと思いますが…。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク sk7474 2009年4月23日 4:28
    2009年4月9日 22:50

  • ところで、取得できたとして、その情報を定期的にポストバックするつもりですか?
    1秒ごとに取得・ポストバックし続けるような仕組みだと使いづらいものになるかと思いますが…。
    さらに、サーバー側がクラスター構成だった場合の対応について、考慮が必要ではないかと。

    Jitta@わんくま同盟
    • 回答としてマーク sk7474 2009年4月23日 4:28
    2009年4月10日 2:45
  • お世話になります。
    ASP.net(VB)でメモリとCPU使用率取得の方法が知りたいです。

    windows Form アプリにには、よくPerformanceCounter を使用したり、Timerなどで取得していますが、ASP.netではどう取得すればいいのかうまくいきません。

    教えていただければ幸いです。

    変な質問ですいません。


    tomotomody

     サーバーの情報を取得するのですか? それともクライアントの情報を取得するのですか?
     もしサーバーの情報であれば、画面の更新については、Ajaxを使えばポストパックは使わなくてもできそうです。
     (AjaxにTimerコントロールがあったはず)
    • 回答としてマーク sk7474 2009年4月23日 4:28
    2009年4月10日 5:35
  • 返信ありがとうございます。

    明確でない質問ですいません。

    サーバー側のCPUとメモリ情報を取得したいです。
    取得したいタイミングは、ページの読み込み時(初期表示)です。


    tomotomody
    2009年4月10日 9:33
  • > windows Form アプリにには、よくPerformanceCounter を使用したり、Timerなどで
    > 取得していますが、ASP.netではどう取得すればいいのかうまくいきません。

    それで望みの情報が取得でき、

    > サーバー側のCPUとメモリ情報を取得したいです。

    ということであれば、同じようにすれば良さそうですが、それは試してみましたか?

     

    2009年4月10日 15:24
  • 質問する順番が間違えていましたすいません。
    先に、PerformanceCounterについて明確に調べておくべきでした(現在も調査中)。


    Windows アプリで実行できたのを元に作成しましたASP.netのコードです。
    このコードにも問題あると思いますが・・・
    どうも0.00% 0MBと表示されてしまう・・・
    このコードについても調査中です。

    'ページロード時
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not IsPostBack Then
                    ASPPC.CategoryName = "memory"
                    ASPPC.CounterName = "Available MBytes"
                    ASPPC.CategoryName = "Process"
                    ASPPC.CounterName = "Private Bytes"
                    ASPPC.InstanceName = "Explorer"
                    ASPPC.CategoryName = "Processor"
                    ASPPC.CounterName = "% Processor Time"
                    ASPPC.InstanceName = "_Total"
                    lblCPU.Text = String.Format("{0:P2}", ASPPC.NextValue() / 100.0F)
                    lblMemory.Text = ASPPC.NextValue() & "MB"
    
            End If
    
    End Sub

     


    tomotomody
    2009年4月10日 19:29
  • > Windows アプリで実行できたのを元に作成しましたASP.netのコードです。

    本当に Windows アプリで実行できたのでしょうか? そのコードを Windows アプリの Form_Load で実行し
    て、期待する結果が得られます?

    > どうも0.00% 0MBと表示されてしまう・・・

    VS2008 ドキュメント([ヘルプ]→[検索(S)]で表示されるもの)の PerformanceCounter.NextValue メソ
    ッドの解説によると、

    "カウンタの計算される値が 2 回のカウンタ読み取りに依存する場合、最初の読み取り操作では 0.0 が返され
    ます。パフォーマンス カウンタのプロパティをリセットして別のカウンタを指定するのは、新しいパフォーマ
    ンス カウンタを作成するのと同じです。新しいプロパティを使用する最初の読み取り操作では、同様に 0.0 が
    返されます。NextValue メソッドの呼び出しの間隔として推奨される値は 1 秒です。この秒数の遅延後にカウ
    ンタが次のインクリメンタル読み取りを実行できます。"

    とのことなので、CPU 使用率の方が 0.00% になるのはそのせいだと思います。

    メモリ使用量(?)の方が 0MB になるのはコードに問題がある(間違っている)からでしょう。

    • 回答としてマーク sk7474 2009年4月23日 4:28
    2009年4月11日 3:27
  • ありがとうございます。
    調べてみます。
    tomotomody
    2009年4月11日 9:46
  • こんにちは。中川俊輔です。

    皆様、回答ありがとうございます。

    トモディーさん、フォーラムのご利用ありがとうございます。
    その後いかがですか?カウンタの取得はうまく行きましたか?
    また何か質問がありましたら、ぜひ投稿してみてください。

    勝手ながら、有用な情報と思われる回答へ回答マークをつけさせていただきました。

    今後ともフォーラムをよろしくお願いします。
    それでは!
    マイクロソフト株式会社 フォーラム オペレータ 中川 俊輔
    2009年4月23日 4:31