2012-03-21 5 views
0

Я хочу контролировать свою IIS (ферму SharePoint) с помощью WMI. Я пытаюсь получить следующую информацию от системы:WMI - данные о производительности NonAnonymousUsersPerSec

  • CurrentConnections
  • NonAnonymousUsersPerSec
  • AnonymousUsersPerSec

Моя проблема заключается в том, что я хочу, одни и те же данные, что и в «Монитор надежности и производительности «(perfmon), когда я добавляю к монитору \ Web Service (_Total) \ Anonymous User/ses и \ Web Service (_Total)/NonAnonymous Users/ses.

Этот монитор показывает мне почти 20 NonAnonymous пользователей в секунду и 0 Anonymous. Я думаю, что эти значения верны. Количество соединений одинаково, в перфоман-мониторе и в запросе WMI.

Но значение для CurrentUser полностью отличается от значения на мониторе.

Как получить эти данные с помощью запросов WMI?

Win32_PerfFormattedData_W3SVC_WebService class

SelectQuery queryCurrentUser = new SelectQuery("SELECT * FROM Win32_PerfFormattedData_W3SVC_WebService WHERE Name LIKE \"_Total\""); 
  • CurrentConnections: ~ 150
  • NonAnonymousUsersPerSec: 0
  • AnonymousUsersPerSec: 0

Win32_PerfRawData_W3SVC_WebService class

SelectQuery queryCurrentUser = new SelectQuery("SELECT * FROM Win32_PerfRawData_W3SVC_WebService WHERE Name LIKE \"_Total\""); 
  • CurrentConnections: ~ 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"]); 
} 

ответ

0

Я нашел решение!

Win32_PerfFormattedData_ASPNET_ASPNETApplications класс.

Значения указаны в RequestsPerSec и AnonymousRequestsPerSec

Смежные вопросы