記一次生產環(huán)境SQL Server服務器卡頓問題解決--內存分配不當
概述
最近有臺數據庫做了遷移,然后運維人員過了一段時間發(fā)現這臺服務器非???,連遠程登錄都要很久,下面記錄下其中的解決過程。
1、查看資源情況
可以發(fā)現內存爆滿了,而排名第一的正是sqlserver的進程
2、查看sqlserver內存分配
SQL Server對服務器內存的使用策略是用多少內存就占用多少內存,只用在服務器內存不足時,才會釋放一點占用的內存,所以SQL Server 服務器內存往往會占用很高。
可以看到遷移之前分配的內存是10G,但遷移后的服務器只有8G內存。
3、調整sqlserver內存
這里可以把最大服務器內存改成1G,確定后內存就會被強制釋放,然后把最大服務器內存改成合適的值。
4、查看內存分配
正常只啟動sqlserver服務器內存消耗2.34G,打開F5客戶端到3.1G,也就是消耗0.7G內存,最后打開下載數據的客戶端,應該是下載數據都緩存到sqlserver內存里面了,所以內存一直在增加..目前穩(wěn)定在5.17G內存,也就是這個下載消耗了2.2G內存。
5、查看目前內存狀態(tài):
DBCC MemoryStatus
這些內存一般都是Sql Server運行時候用作緩存的:
1) 數據緩存:執(zhí)行個查詢語句,Sql Server會將相關的數據頁(Sql Server操作的數據都是以頁為單位的)加載到內存中來, 下一次如果再次請求此頁的數據的時候,就無需讀取磁盤了,大大提高了速度。
2)執(zhí)行命令緩存:在執(zhí)行存儲過程,自定函數時,Sql Server需要先二進制編譯再運行,編譯后的結果也會緩存起來, 再次調用時就無需再次編譯。