本文為本系列最后一章,監(jiān)控內(nèi)存使用。監(jiān)控服務(wù)器的內(nèi)存是非常重要的事情,有很多情況會(huì)引起內(nèi)存消耗。所以要經(jīng)常性地做檢查。 本文將使用可靠性和性能監(jiān)視器來獲取內(nèi)存相關(guān)的統(tǒng)計(jì)。
準(zhǔn)備工作:在開始之前,先來了解一下將要用到的計(jì)數(shù)器: Memory: Available Mbytes:提供系統(tǒng)上可用內(nèi)存的數(shù)量。 Memory: Pages/sec:顯示有多少頁被用于讀或?qū)懭胗脖P,這些基于硬頁面錯(cuò)誤。 Paging File:%Usage:顯示掛起的總數(shù)的百分比。 SQL Server: Buffer Manager: Buffer cache hit ratio:返回SQLServer從緩存但不是從硬盤返回的數(shù)據(jù)的百分比。 SQL Server: Buffer Manager: Page life expectancy:顯示數(shù)據(jù)駐留在內(nèi)存的平均秒數(shù) SQL Server: Buffer Manager: Memory Grants Pending:等待內(nèi)存工作區(qū)授予的進(jìn)程數(shù)。
步驟:1、 打開可靠性和性能監(jiān)視器,在【運(yùn)行】中輸入perfmon.exe 2、 選擇性能監(jiān)視器。 3、 去除所有已存在的計(jì)數(shù)器。 4、 添加新計(jì)數(shù)器。 5、 選擇所要監(jiān)視的服務(wù)器。 6、 選擇下面的計(jì)數(shù)器: Memory: Available Mbytes 7、 然后點(diǎn)擊確定。 上面這些步驟已經(jīng)在前一章說明了。這里就不累贅了。
分析:在本文中,再次使用了可靠性和性能監(jiān)視器這個(gè)工具。為了獲取內(nèi)存相關(guān)的性能計(jì)數(shù)器,需要在圖形化界面中觀察這些計(jì)數(shù)器。 首先先檢查Memory: Available Mbytes,這個(gè)值意味著系統(tǒng)的可用內(nèi)存。如果發(fā)現(xiàn)這個(gè)值經(jīng)常很低,可能表示服務(wù)器內(nèi)存不足,在生產(chǎn)數(shù)據(jù)庫中,這個(gè)值可以使用GB為單位。 然后檢查Memory: Pages/sec ,以為這因?yàn)橛岔撁驽e(cuò)誤導(dǎo)致的從磁盤讀或?qū)戫撁?。這個(gè)值如果長期高于20,意味著內(nèi)存不足使得應(yīng)用程序使用虛擬內(nèi)存,從而導(dǎo)致掛起。 接著是Memory: pages/sec ,同時(shí)也要檢查Paging File:%Usage去預(yù)估內(nèi)存掛起。如果這個(gè)值經(jīng)常超過20%,可能意味著內(nèi)存不足。 SQL Server: Buffer Manager: Buffer cache hit ratio:意味著數(shù)據(jù)從緩存中讀取的次數(shù),比較合理的值為大于90%。如果該值很低,可能內(nèi)存不足或者需要檢查索引和查詢。如果你需要獲得大量數(shù)據(jù),這一步可能就會(huì)占用大量內(nèi)存然后引起SQLServer從磁盤讀數(shù)據(jù)而不是從內(nèi)存。檢查索引,確保在大表中能盡可能筆描掃描。并盡可能限制查詢返回的結(jié)果行。 檢查SQL Server: Buffer Manager: Page life expectancy,表示數(shù)據(jù)頁駐留在內(nèi)存的秒數(shù)。微軟建議最少300秒。如果在一個(gè)實(shí)例中經(jīng)常低于300秒,意味著數(shù)據(jù)保留的時(shí)間少于5分鐘就被移出內(nèi)存。 如果SQL Server: Memory Manager: Memory Grants Pending經(jīng)常建議等待進(jìn)程,你可能需要增加服務(wù)器的內(nèi)存了。 不管什么原因,如果你發(fā)現(xiàn)內(nèi)存不足和掛起發(fā)生得比較頻繁,你首先應(yīng)該檢查是否有非SQL Server的其他應(yīng)用或者服務(wù)耗費(fèi)了比SQL Server更加多的內(nèi)存。如果你發(fā)現(xiàn)這些應(yīng)用或者服務(wù),嘗試移到別的服務(wù)器。如果做不到,那么需要增加更多的內(nèi)存,以供SQLServer使用。 如果服務(wù)器僅僅工SQL Server使用且沒有上面說的情況,那么要分析你的查詢和索引,以確保他們是最優(yōu)化的。如果已經(jīng)優(yōu)化好,還是存在這些問題,那么才需要考慮增加內(nèi)存。 除了可靠性和性能監(jiān)視器,還可以使用SQL Server Profiler來監(jiān)控性能,創(chuàng)建一個(gè)用戶自定義收集器并存為文件,當(dāng)你從性能監(jiān)視器中獲取性能數(shù)據(jù)時(shí),SQL Server Profiler會(huì)同步運(yùn)行。一旦你完成收集,可以把性能數(shù)據(jù)導(dǎo)入到SQLServer Profiler中供任何時(shí)候分析。 |
|