【问题标题】:How to monitor the computer's cpu, memory, and disk usage in ASP.NET?ASP.NET中如何监控计算机的cpu、内存和磁盘使用情况?
【发布时间】:2013-07-07 02:41:14
【问题描述】:

我想在我的 ASP.NET 解决方案中监控以下系统信息:

  • 当前 CPU 使用率(百分比)
  • 可用内存*(空闲/总)
  • 可用磁盘空间(可用/总)

*请注意,我的意思是整个系统可用的总内存

我尝试使用 windows perfmon(运行 --> perfmon.msc),但它似乎不是我要寻找的。 我需要一些可以告诉我调用到我的应用程序中的每个函数或方法的资源负载。

非常感谢任何建议。

编辑: 也许了解如何使用 perfmon 监控单个进程消耗的 % Process Time 可能很有用(例如 w3wp)

编辑编辑: 我找到了!添加新计数器 --> 进程 --> w3wp 上的 % 处理器时间!谢谢

【问题讨论】:

    标签: asp.net memory-management load cpu-usage perfmon


    【解决方案1】:

    如果您希望使用性能计数器来分析您的应用程序,则可以选择它。

    但是,如果您希望它作为通用系统信息,那么您可能需要查看 WMI。这是我之前用于获取磁盘信息的示例:

    注意:您需要引用System.Management

    Dim scope As ManagementScope = New ManagementScope("\\.\root\CIMV2")
    scope.Options.Impersonation = ImpersonationLevel.Impersonate
    scope.Options.EnablePrivileges = True
    
    Dim wmiQuery = "SELECT SystemName, Name, VolumeName, Size, FreeSpace FROM Win32_LogicalDisk WHERE DriveType = 3 "
    Dim query As ObjectQuery = New ObjectQuery(wmiQuery)
    Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher(scope, query)
    
    Dim result As New List(Of MyDrive)
    For Each systemDrive As ManagementObject In searcher.Get
        Dim diskDrive = New MyDrive
        diskDrive.SystemName = systemDrive("SystemName").ToString
        diskDrive.Name = systemDrive("Name").ToString
        diskDrive.Size = CDec(systemDrive("Size")) / 1073741824
        diskDrive.FreeSpace = CDec(systemDrive("FreeSpace")) / 1073741824
        diskDrive.VolumeName = systemDrive("VolumeName").ToString
        result.Add(diskDrive)
    Next
    
    Public Class MyDrive
        Public Property SystemName As String
        Public Property Name As String
        Public Property VolumeName As String
        Public Property Size As Decimal
        Public Property FreeSpace As Decimal
        Public ReadOnly Property PercentFree As Decimal
            Get
                Dim percent As Decimal = 0
                If Size > 0 Then percent = FreeSpace / Size
                Return percent
            End Get
        End Property
    End Class
    

    请注意,我已经划分了磁盘空间以将其转换为 GB。

    【讨论】:

      【解决方案2】:

      性能计数器是我的建议。查看Setting up performance counters for ASP.NET

      除了性能计数器之外,如果您真的想深入了解您的代码,那么您可以尝试使用内存分析器,如下所示:

      【讨论】:

      • 我读了你的文章。您能帮我了解如何将“% Processor Time”或其他计数器与我正在运行的应用程序相关联。
      • 你下载PerfMon了吗?
      • 我正在尝试使用您在文章中建议的设置
      • 请问,如何将“% Processor Time”或其他计数器关联到我正在运行的应用程序?
      猜你喜欢
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      • 2011-08-04
      • 1970-01-01
      • 2015-05-23
      • 2021-02-08
      • 1970-01-01
      相关资源
      最近更新 更多