1

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

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

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

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

任何建议都非常感谢。

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

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

4

2 回答 2

0

性能计数器是我的建议。查看为 ASP.NET 设置性能计数器

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

于 2013-07-09T13:39:51.540 回答
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。

于 2013-07-09T13:45:57.593 回答