2011-09-30 65 views
0

我試圖檢索由Windows服務使用的內存量,例如,IIS。我使用python和windows wmi擴展。我在WIN32_Service類中沒有找到任何方法可以給我所需的信息。獲取這些信息的最佳方法是什麼?獲取windows服務使用內存使用wmi

回答

1

有關進程內存的信息通過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