伺服器無法分配系統頁面緩衝池中的記憶體

2021-09-03 04:29:12 字數 1451 閱讀 8920

症狀資訊:

當伺服器的負載很重時,伺服器服務可能會在系統事件日誌中重覆記錄以下錯誤,指示伺服器的頁面緩衝池記憶體不足:

** - srv

型別 - 錯誤

事件 id - 2020

description -

伺服器無法通過系統頁面共享區來進行分配,因為共享區當前是空的。

資料 -

0000: 00040000 00540001 00000000 c00007e4

0010: 00000000 c000009a 00000000 00000000

0020: 00000000 00000000 0000000b

問題原因:

有幾種因素可能會耗盡頁面緩衝池記憶體的**。啟用池標記並以不同的時間間隔拍攝池快照可以幫助您了解哪個驅動程式正在使用頁面緩衝池記憶體。如果池快照指出 mmst 標籤(mm 區域物件原型 pte)使用的池記憶體最多,並且頁面緩衝池記憶體已耗盡,或者系統在記錄出錯事件 2020,則很可能是因為伺服器上開啟了大量的檔案。預設情況下,當系統達到總頁面緩衝池大小的 80% 時,記憶體管理器會設法修整分配的頁面緩衝池記憶體。根據系統配置,計算機上可能的最大頁面緩衝池記憶體可以是 343mb,而此數量的 80% 就是 274mb。如果記憶體管理器的修整速度跟不上需求,就可能發生本文「症狀」一節中列出的事件。通過優化記憶體管理器,使它在更早的時間(比如當使用的頁面緩衝池記憶體達到 60% 時)開始修整過程,在突發的高峰使用期間就可以滿足頁面緩衝池的需求,從而避免出現頁面緩衝池記憶體不足的情況。

解決方案:

警告:如果使用登錄檔編輯器或其他方法錯誤地修改了登錄檔,則可能導致嚴重問題。這些問題可能需要重新安裝作業系統才能解決。microsoft 不能保證您可以解決這些問題。修改登錄檔需要您自擔風險。

以下優化建議在減輕此問題方面很有幫助:

啟動登錄檔編輯器 (regedt32.exe)。

在登錄檔中找到並單擊以下登錄檔項:

hkey_local_machine\system\currentcontrolset\control\session manager\memory management

數值名稱:poolusagemaximum

資料型別:reg_dword

基數:十進位制

數值資料:60

將該值設定為 60 可以通知記憶體管理器在達到 pagedpoolmax 的 60% 而不是預設設定 80% 時開始修整過程。如果 60% 的閾值不足以處理活動中的高峰,請將此設定減小到 50% 或 40%。

數值名稱:pagedpoolsize

資料型別:reg_dword

基數:十六進製制

數值資料:0xffffffff

將 pagedpoolsize 設定為 0xffffffff 可為計算機分配最大的頁面緩衝池以取代其他資源。

退出登錄檔編輯器。

重新啟動伺服器,以使更改生效。

伺服器無法分配系統頁面緩衝池中的記憶體

症狀資訊 當伺服器的負載很重時,伺服器服務可能會在系統事件日誌中重覆記錄以下錯誤,指示伺服器的頁面緩衝池記憶體不足 srv 型別 錯誤 事件 id 2020 description 伺服器無法通過系統頁面共享區來進行分配,因為共享區當前是空的。資料 0000 00040000 00540001 00...

伺服器應用 雙緩衝佇列

在伺服器開發中 通常的做法是 把 邏輯處理執行緒和i o處理執行緒分離。邏輯處理執行緒 對接收的包進行邏輯處理。i 0處理執行緒 網路資料的傳送和接收,連線的建立和維護。通常 邏輯處理執行緒和i o處理執行緒是通過資料佇列來交換資料,就是生產者 消費者模型。這個資料佇列是多個執行緒在共享,每次訪問都...

伺服器應用 雙緩衝佇列

在伺服器開發中 通常的做法是 把 邏輯處理執行緒和i o處理執行緒分離。邏輯處理執行緒 對接收的包進行邏輯處理。i 0處理執行緒 網路資料的傳送和接收,連線的建立和維護。通常 邏輯處理執行緒和i o處理執行緒是通過資料佇列來交換資料,就是生產者 消費者模型。這個資料佇列是多個執行緒在共享,每次訪問都...