【发布时间】:2012-04-06 00:05:29
【问题描述】:
我想使用 WMI 监控我的 IIS(SharePoint Farm)。我正在尝试从系统中获取以下信息:
- 当前连接数
- NonAnonymousUsersPerSec
- AnonymousUsersPerSec
我的问题是,当我添加 \Web Service(_Total)\Anonymous User/ses 和 \web Service(_Total)/NonAnonymous Users/ 时,我想要与“可靠性和性能监视器”(perfmon) 中相同的数据转到监视器。
此监视器每秒向我显示近 20 个非匿名用户和 0 个匿名用户。 我认为这些价值观是正确的。在 perfmon-monitor 和 WMI 查询中,连接数是相同的。
但 CurrentUser 的值与监视器中的值完全不同。
如何使用 WMI 查询获取这些数据?
Win32_PerfFormattedData_W3SVC_WebService class
SelectQuery queryCurrentUser = new SelectQuery("SELECT * FROM Win32_PerfFormattedData_W3SVC_WebService WHERE Name LIKE \"_Total\"");
- 当前连接数:~150
- NonAnonymousUsersPerSec : 0
- AnonymousUsersPerSec : 0
Win32_PerfRawData_W3SVC_WebService class
SelectQuery queryCurrentUser = new SelectQuery("SELECT * FROM Win32_PerfRawData_W3SVC_WebService WHERE Name LIKE \"_Total\"");
- 当前连接数:~150
- NonAnonymousUsersPerSec : ~150000
- AnonymousUsersPerSec : ~2000000
代码:
ManagementScope scope = new ManagementScope("\\\\" + stringServer + "\\root\\CIMV2");
//PerfRawData query
SelectQuery queryCurrentUser = new SelectQuery("SELECT * FROM Win32_PerfRawData_W3SVC_WebService WHERE Name LIKE \"_Total\"");
//PerfFormattedData query
SelectQuery queryCurrentUser = new SelectQuery("SELECT * FROM Win32_PerfFormattedData_W3SVC_WebService WHERE Name LIKE \"_Total\"");
ManagementObjectSearcher currentUsers = new ManagementObjectSearcher(scope, queryCurrentUser);
ManagementObjectCollection currentUsersCollection = currentUsers.Get();
foreach (ManagementObject queryObj in currentUsersCollection)
{
Console.WriteLine("CurrentConnections {0}", queryObj["CurrentConnections"]);
Console.WriteLine("NonAnonymousUsersPerSec {0}", queryObj["NonAnonymousUsersPerSec"]);
Console.WriteLine("AnonymousUsersPerSec {0}", queryObj["AnonymousUsersPerSec"]);
}
【问题讨论】:
标签: c# iis wmi performancecounter wmi-query