使用wmi获取windows服务使用的内存

时间:2011-09-30 11:07:41

标签: python wmi

我正在尝试检索Windows服务使用的内存量,例如IIS。我正在使用python和windows wmi扩展。我没有在WIN32_Service类中找到任何可以提供我需要的信息的方法。获取此信息的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

使用Win32_Process class通过WMI公开有关进程内存的信息。特别是,您可能对WorkingSetSizeVirtualSize属性感兴趣。由于您是从服务开始的,因此您需要从服务中获取ProcessId属性,以便选择适当的Win32_Process实例。

监视IIS的总内存消耗可能有点复杂,因为IIS会根据其配置方式调整多个进程和服务(请参阅hierarchy of managed entities described here)。但是,让我们假设这个例子我们只对W3SVC所消耗的内存感兴趣,它实现了实际的HTTP协议。假设我们正在使用Tim Golden的fantastic WMI library,我们需要做这样的事情:

 import wmi

 c = wmi.WMI()
 for www_srv in c.Win32_Service(Name = 'W3SVC'):
      for process in c.Win32_Process(ProcessId = www_srv.ProcessId):
          print 'Memory used by W3SVC', process.WorkingSetSize