監視效能計數器 Memory\\% Committed Bytes in Use
系統的 % Committed Bytes In Use (Memory\% Committed Bytes In Use) 已超過閾值。 整體系統效能可能將明顯降低,從而導致作業系統與應用程式效能不良。
% Committed Bytes In Use 效能計數器表示 Memory\Committed Bytes 對 Memory\Commit Limit 的比例。 Committed Bytes 是已認可的虛擬記憶體容量,而 Commit Limit 是不需延伸分頁檔即能認可的虛擬記憶體容量。
超過此效能閾值時,通常表示無法擴充分頁檔,或無法快速擴充以滿足應用程式的記憶體需求。
在下列情況下,可用實體記憶體容量可能會變得很低:
電腦上有太多的應用程式同時在執行。
應用程式可能在一段時間後流失記憶體。
若要確認是否發生過度分頁的情形,請將 Avg. Disk sec/Transfer (實體磁碟計數器) 與 Pages/sec 計數器的值相乘。 如果這些計數器的乘積超過 0.1,就表示分頁佔用磁碟存取時間的 10% 以上。 如果長時間發生此問題,您可能需要更多的記憶體。
其次,請檢查執行中的應用程式是否造成過度分頁。 可能的話,請停止工作集值最高的應用程式,然後查看分頁速率是否有明顯變化。 如果您懷疑發生過度分頁的情形,請檢查系統監視器中的 Pages/sec 計數器。 此計數器是記憶體物件類型的一部分,顯示因為不在實體記憶體中而必須從磁碟讀取的分頁數目 (請注意此計數器與 Page Faults/sec 之間的差異,後者僅表示在記憶體內的指定工作集中沒有立即可用的資料)。
若要解決實體記憶體不足的狀況,系統管理員可選擇下列一個或多個選項:
關閉或停止一或多個應用程式、服務、處理程序
在電腦上新增額外的實體記憶體
將應用程式移至一部或多部其他電腦 (僅適用於伺服器)
如果已為系統分配適當的實體記憶體與應用程式負載,但系統在一段時間內仍持續超過可用實體記憶體閾值,則可能是應用程式流失記憶體。 若要識別流失記憶體的應用程式,系統管理員可以執行下列操作:
開啟 [系統監視器],並在一段時間內持續監視下列系統效能計數器:
Paging File\% Usage
Paging File\%
Memory\Pool Nonpaged Bytes
Memory\Pool Paged Bytes
如果以上任何一個計數器在一段時間內持續增加,則可能是應用程式流失記憶體。 若要檢視上述效能計數器的最近歷程,可使用下列檢視:
如果系統似乎是流失記憶體,使用系統監視器監視每個執行中處理程序的下列計數器,可識別特定的應用程式:
Process\Page File Bytes
Process\Pool Nonpaged Bytes
Process\Pool Paged Bytes
Process\Private Bytes
Process\Thread Count
如果觀察到任何計數器持續出現大幅增加的情形,可能需要連絡應用程式廠商以尋求支援。
Target | Microsoft.Windows.Server.2003.OperatingSystem | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | False | ||
Instance Name | Memory | ||
Counter Name | \% Committed Bytes In Use | ||
Frequency | 120 | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | System.Performance.ConsecutiveSamplesThreshold | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.Windows.Server.2003.OperatingSystem.PercentCommittedBytesInUse" Accessibility="Public" Enabled="false" Target="Microsoft.Windows.Server.2003.OperatingSystem" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SystemPerf!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Server.2003.OperatingSystem.PercentCommittedBytesInUse.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters/>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="ConditionFalse" HealthState="Success"/>
<OperationalState ID="OverThreshold" MonitorTypeStateID="ConditionTrue" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>% Committed Bytes In Use</CounterName>
<ObjectName>Memory</ObjectName>
<InstanceName/>
<Frequency>120</Frequency>
<Threshold>80</Threshold>
<Direction>greater</Direction>
<NumSamples>3</NumSamples>
</Configuration>
</UnitMonitor>