不知道從什么時(shí)候開始,網(wǎng)上開始流傳一種說法,WS2008系統(tǒng)自帶緩存有Bug,然后可能導(dǎo)致服務(wù)器內(nèi)存耗盡而死機(jī)!然后網(wǎng)上就出了一些工具解決這些問題!但事實(shí)上我一直沒能從微軟官方資料獲得相關(guān)說明,自己也沒遇到過這種現(xiàn)象,于是一直耿耿于懷……
注:大家可能經(jīng)常看到WS2008、WS2012的寫法,WS=Windows Server的首字母簡(jiǎn)寫,本站搜索文章推薦簡(jiǎn)寫方式。
而今天在翻閱云更新產(chǎn)品歷史更新時(shí),發(fā)現(xiàn)從V2015.4.15.830版本已經(jīng)會(huì)自動(dòng)修改2008系統(tǒng)自帶緩存大小,于是勾起了研究的興趣。功夫不負(fù)有心人,終于找到微軟資料,并已證實(shí)2008系統(tǒng)確實(shí)存在該問題,但在Windows 7和Windows Server 2008r2版本中已經(jīng)得到更新,“可以解決已經(jīng)發(fā)現(xiàn)的問題”。
微軟資料中對(duì)WS2008系統(tǒng)緩存耗盡導(dǎo)致服務(wù)器死機(jī)的原因說明:
在 Microsoft Windows 操作系統(tǒng)中的內(nèi)存管理使用基于請(qǐng)求的算法。如果任何進(jìn)程請(qǐng)求,并使用大量?jī)?nèi)存,進(jìn)程的工作集 (在物理內(nèi)存中的內(nèi)存頁(yè)面數(shù)) 都會(huì)增大。如果這些請(qǐng)求持續(xù)且未加抑制,進(jìn)程的工作集將會(huì)增長(zhǎng)至占用所有的物理內(nèi)存。在此情況下,其他所有進(jìn)程的工作集調(diào)出到硬盤。這種行為降低了應(yīng)用程序和服務(wù)的性能,因?yàn)閮?nèi)存頁(yè)是連續(xù)寫入硬盤和從硬盤讀取的。
這種行為同樣適用于系統(tǒng)文件緩存的工作集。如果這些請(qǐng)求是連續(xù)的且不受控制的,則該進(jìn)程的工作集將繼續(xù)增長(zhǎng),直到消耗盡所有物理內(nèi)存。在這種情況下,所有其他進(jìn)程的工作集分頁(yè)到硬盤,被占用的物理內(nèi)存量不可用于其他進(jìn)程。
在 32 位 Windows 操作系統(tǒng)版本早于 Windows Vista,系統(tǒng)文件緩存的工作集是有理論內(nèi)存限制為小于 1 千兆字節(jié) (GB)。
在 32 位版本的 Windows Vista 操作系統(tǒng),動(dòng)態(tài)分配核心資源。
在 64 位版本的 Windows 操作系統(tǒng),虛擬地址范圍通常通常超過了物理大小。
WS2008系統(tǒng)緩存耗盡導(dǎo)致服務(wù)器死機(jī)的解決方法:
若要變通解決此問題,請(qǐng)使用GetSystemFileCacheSize API 函數(shù)和SetSystemFileCacheSize API 函數(shù)來(lái)設(shè)置系統(tǒng)文件緩存的工作集的大小最大值或最小值。
Microsoft Windows 動(dòng)態(tài)緩存服務(wù)是演示如何使用這些 Api 來(lái)將這一問題的影響降至最低的一種策略的示例服務(wù)。
安裝和使用 Microsoft 動(dòng)態(tài)緩存服務(wù)不會(huì)排除對(duì) Microsoft Windows 的支持。
您可以從以下 Microsoft 網(wǎng)站獲得服務(wù)和源的代碼:
若要確定您的系統(tǒng)是否受此問題,請(qǐng)安裝 SysInternals RamMap 工具。
運(yùn)行該工具時(shí),選擇使用計(jì)數(shù)選項(xiàng)。這將顯示多個(gè)列,以顯示當(dāng)前模式的內(nèi)存使用情況。單擊Active列進(jìn)行排序使用字節(jié)數(shù),并注意總使用量(Total)。如果排列在頂部的使用計(jì)數(shù)是”Metafile”,并使用了大部分可用的內(nèi)存。或者您遇到”癥狀”一節(jié)中描述的系統(tǒng)文件緩存問題。可以對(duì)其進(jìn)行如此驗(yàn)證: 即通過使用性能監(jiān)視器監(jiān)視的Memory\System Cache Resident Bytes計(jì)數(shù)器并查看隨著時(shí)間的推移不斷增長(zhǎng)的緩存用量。
圖 1。存在問題的 RamMap 示例。
圖 2。正常的 RamMap 示例。
如果在性能監(jiān)視器中的Memory\System Cache Resident Bytes計(jì)數(shù)器顯示一段時(shí)間的上升趨勢(shì),計(jì)算機(jī)如圖 3 所示出現(xiàn)問題。
圖 3。性能監(jiān)視器輸出示例的計(jì)算機(jī)遇到問題隨著時(shí)間的推移。