數據庫服務器虛擬內存設置


問題場景

今天收到一台數據庫服務器的磁盤空間告警郵件,如下所示,C盤總共60G,只剩下3.13G大小空間,Free Rate 為5.22%。

clip_image001

因為msdb、tempdb等系統數據庫都不在系統盤(C盤),對於突然出現的系統盤磁盤空間不足,感覺有點奇怪,想了解一下到底是什么原因導致這種情況出現。於是用TreeSize 工具掃描了一下C盤,除了目錄C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log下將近600M的錯誤日志文件,罪魁禍首居然是虛擬內存頁面文件pagefile.sys,居然有36G大小,而整個系統盤只分配了60G大小的空間。如下圖所示:

clip_image002

其實,關於虛擬內存頁面文件的設置,公司的文檔是有明確規定的:

When a SQL Server is configured correctly, it doesn’t use the page file for memory. In theory, we don’t need a page file at

all. Properly configure the Page File settings

    a. Ensure the sum of all page files is equal to the amount of memory in server.

    b. Do not let the system manager your page file.

    c. Ensure the Initial Size and Maximum Size have the same settings.

只是我一直忽略了這個,不大關心服務器的虛擬內存配置,因為公司DBA與系統管理員是職責分明的,只是突然發現這台服務器設置有些異常,原因在於這台服務器RAM 為32G,但是關於虛擬內存的配置是自動管理驅動器的分頁文件大小。如下所示

clip_image003

可以看到虛擬內存頁面文件pagefile.sys全部位於C盤,讓系統自動管理其大小,所以才會出現pagefile.sys增長到36G大小,同事給予的建議是將虛擬內存設置為32G,C、D、E、F四個盤設置4個虛擬內存頁面文件,每個文件初始大小為8G,最大大小也為8G。這樣可以達到最佳優化配置。

clip_image004

clip_image005

網上關於虛擬內存的優化方法,其實是上面關於虛擬內存配置的詳細解釋:

1、分割存於多個硬盤

將虛擬內存設在較快的硬盤上,的確可使虛擬內存的運作更有效率。但是若電腦上兩個硬盤速度一樣快,則應將虛擬內存平均分配在兩個不同的硬盤上(並非同一硬盤的不同分區)。因為同步進行讀寫操作會更有效地提高系統整體的虛擬內存性能。例如,我將上面位於C盤的32G大小的虛擬內存文件,分為4份,每份8G大小置於C、D、E、F四個盤。理論上這樣做會加快虛擬內存整體的讀寫操作.但是我沒有一個好的測試案例來驗證結果。

2、硬盤需有足夠空間

如果你不是很有經驗的電腦用戶,又或者沒有特殊的使用要求,在Windows XP中選擇“系統管理的大小”的方法來自動處理虛擬內存,一般情況下應該會比選擇“自定義大小”的方法來得安全和穩定。不過,有一點大家必須注意,由於虛擬內存的“頁面文件”(pagefile.sys)會隨着電腦使用過程進行收縮和擴展,為使系統管理虛擬內存能夠進行得順利和更具彈性,必須保證分頁文件所在的硬盤擁有足夠的可用空間。

3、最小值等於最大值

選擇“自定義大小”的方法來處理虛擬內存,並將最大值和最小值都設為同一數值。有很多人都相信用這種方法來處理虛擬內存有助於提高系統的性能。他們所持的理由是,當最大值和最小值都相等時,系統無需時刻進行收縮和擴展頁面文件的動作。省去了這些工作,相應地就是提高系統效率。

這種方法,很多人堅信有效,但同樣地,也有人指出其實並沒有效果。但不管怎樣也好,如要將最大值和最小值設為相等,必須堅守一個原則,那就是虛擬內存的大小必須足夠,否則系統輕則會出現效率下降(要進行更多復寫動作來騰出空間),嚴重的更會造成系統不穩定。

參考資料:

http://blog.sina.com.cn/s/blog_4b47ed250100edpd.html

http://baike.baidu.com/view/724336.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM