Windows-Server-2008-R2

firebird + windows server 2008 r2 的高記憶體使用率

  • June 5, 2014

我有一個 Windows Server 2008 R2(64 位)在 4GB 物理伺服器中執行 64 位安裝的 Firebird 2.1.4.18393_0。

過了一會兒,任務管理器顯示所有記憶體都用完了,但是所有程序的記憶體總和並沒有堆棧到記憶體的一半。不幸的是,它開始交換。

使用 RAMMAP,我可以看到我的整個數據庫文件都映射到了記憶體中。這只發生在 windows server 2008 r2 和 windows 7 64 位中。我可以使用 firebird 32 或 64 位安裝,沒關係。

我怎樣才能防止這種情況?為什麼這只發生在 w2k8r2 和 w7 中?

提前 tks

** 更新

顯然,這是通過文件系統記憶體使用所有記憶體而發生的。微軟文件解釋說,這在 windows xp、2k3、vista 和 2k8 中是一個問題,但在 7 和 2k8r2 中已解決。還補充說,這個問題在 64 位主機中更為常見。( http://support.microsoft.com/kb/976618 )

有一些工具(DynCache、setcache 和來自 windows API 的 Get/SetSystemFileCacheSize 系統呼叫)允許我修復 fscache 記憶體使用的上限,但文件認為我不應該在 w2k8r2 中這樣做,因為它會嚴重影響整個系統的性能。無論如何,我試過了,性能保持不變,頁面文件的使用仍然存在,儘管現在有更多的 1gb 可用記憶體。

畢竟,問題解決了。這是一點窗戶調音和一點火鳥調音。

在 Windows 方面,setcache 確實起到了控製文件系統記憶體大小的作用,即使微軟說我不需要這個。我剛剛添加了一個計劃任務以在每次啟動時執行。

但即使在降低記憶體使用後,我的 firebird 數據庫仍在使用我的雙四核機器的 12.5%:一個核心的 100%,性能很糟糕(從只有 10 個元組的表中選擇所有元組需要 30 秒)。

在使用 sinática (www.sinatica.com) 進行一些監視之後,我意識到我的數據庫正在掃描。所以我禁用了自動掃描並添加了另一個計劃任務來進行為期 2 天的掃描。

引用自:https://serverfault.com/questions/302172