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

问题描述:

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

有关进程内存的信息通过WMI使用Win32_Process class公开。尤其是,您可能会对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