获取windows服务使用内存使用wmi
问题描述:
我试图检索由Windows服务使用的内存量,例如,IIS。我使用python和windows wmi扩展。我在WIN32_Service类中没有找到任何方法可以给我所需的信息。获取这些信息的最佳方法是什么?获取windows服务使用内存使用wmi
答
有关进程内存的信息通过WMI使用Win32_Process
class公开。尤其是,您可能会对WorkingSetSize
和VirtualSize
属性感兴趣。由于您是从服务开始的,因此您需要从服务中获取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