如何在ASP.NET中监视计算机的CPU,内存和磁盘使用情况?

时间:2013-07-09 13:13:49

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

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

  • 当前cpu使用率(百分比)
  • 可用内存*(免费/总计)
  • 可用磁盘空间(免费/总计)

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

我尝试使用windows perfmon(run - > perfmon.msc)但似乎不是我正在搜索的内容。 我需要能够告诉我调用我的应用程序的每个函数或方法的资源负载。

非常感谢任何建议。

编辑: 也许知道如何使用perfmon监视由单个进程累计的%处理时间(对于istance w3wp)

编辑编辑: 我找到了!添加新计数器 - >过程 - > w3wp上的处理器时间百分比!致谢

2 个答案:

答案 0 :(得分:0)

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

除了性能计数器之外,如果你真的希望在内部查看代码,那么你可以尝试使用内存分析器,例如:

答案 1 :(得分:0)

如果您希望将性能计数器用于分析应用程序,则可以选择性能计数器。

但是,如果您希望将其作为通用系统信息,那么您可能需要查看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。