SQLServer因?yàn)镺S虛擬內(nèi)存不足而hang住異常解決-鎖定內(nèi)存頁(LPIM)

異常:

目前成都創(chuàng)新互聯(lián)已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、筠連網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

DB: SQL Server2012SP3

OS: Windows2012

一線工程師反應(yīng)系統(tǒng)訪問DB突然卡住了,DBA登錄DB檢查SQLServer發(fā)現(xiàn)DB無法登錄,之前SMSS已經(jīng)連接的session中無法執(zhí)行任何SQL。服務(wù)器CPU使用10%,memory使用達(dá)到了99%以上。過了十分鐘系統(tǒng)memory自己降低到了90%以下,DB可以訪問。

分析:

檢查SQLServer error log:

只是在一異常時(shí)間段有stack dump的記錄,但沒有太多有價(jià)值的信息 SQLServer因?yàn)镺S虛擬內(nèi)存不足而hang住異常解決-鎖定內(nèi)存頁 (LPIM)

檢查windows性能計(jì)數(shù)器:

異常時(shí)間段OS memory確實(shí)耗盡 SQLServer因?yàn)镺S虛擬內(nèi)存不足而hang住異常解決-鎖定內(nèi)存頁 (LPIM)

檢查windows log:

有虛擬內(nèi)存不夠警告,

sqlserver.exe進(jìn)程使用28GB(DBA設(shè)定的DB最大內(nèi)存使用量),dllhost.exe進(jìn)程使用12GB

正好把服務(wù)器的32GB+虛擬內(nèi)存設(shè)定的8GB占滿!所以報(bào)錯(cuò)內(nèi)存不足!! SQLServer因?yàn)镺S虛擬內(nèi)存不足而hang住異常解決-鎖定內(nèi)存頁 (LPIM)


解決:

上述dllhost.exe進(jìn)程使用12GB一定存在問題,此塊可能系統(tǒng)層面補(bǔ)丁或病毒相關(guān),已交給系統(tǒng)工程師分析。

但是否有辦法在OS內(nèi)存不足時(shí),DBA通過設(shè)定可以不影響到SQL server的正常運(yùn)行呢?

答案是有的,軟微官方提供鎖定內(nèi)存頁 (LPIM) 解決方法,通過Windows 策略將確定哪些帳戶可以使用進(jìn)程將數(shù)據(jù)保留在物理內(nèi)存中,從而阻止系統(tǒng)將數(shù)據(jù)分頁到磁盤的虛擬內(nèi)存中。這樣即使OS內(nèi)存不足時(shí)對(duì)SQL server的影響也會(huì)是最小了。

設(shè)定:

cmd->gpedit.msc->local computer policy->computer configuration->windows settings->security settings->local policies->user rights assignment-> Lock pages memory中加入添加 SQL Server 啟動(dòng)帳戶 SQLServer因?yàn)镺S虛擬內(nèi)存不足而hang住異常解決-鎖定內(nèi)存頁 (LPIM)

至此,鎖定內(nèi)存頁 (LPIM)設(shè)置完成。

再持續(xù)觀察一段時(shí)間,系統(tǒng)再?zèng)]有發(fā)生系統(tǒng)內(nèi)存不足SQLServer hang住問題。

------------------------------------------------------------ ------------------------------------------

以下附,軟微官方文檔說明:

https://docs.microsoft.com/zh-cn/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-ver15

鎖定內(nèi)存頁 (LPIM)

此 Windows 策略將確定哪些帳戶可以使用進(jìn)程將數(shù)據(jù)保留在物理內(nèi)存中,從而阻止系統(tǒng)將數(shù)據(jù)分頁到磁盤的虛擬內(nèi)存中。 鎖定內(nèi)存中的頁可以在發(fā)生將內(nèi)存分頁到磁盤時(shí)保持服務(wù)器的響應(yīng)能力。 已向有權(quán)運(yùn)行 sqlservr.exe 的帳戶授予 Windows 鎖定內(nèi)存頁 (LPIM) 用戶權(quán)限時(shí),在 SQL Server Standard Edition 和更高版本的實(shí)例中將“鎖定內(nèi)存頁”  選項(xiàng)設(shè)置為“打開”  。

若要對(duì) SQL Server 禁用“鎖定內(nèi)存頁”選項(xiàng),請為有權(quán)運(yùn)行 sqlservr.exe( SQL Server 啟動(dòng)帳戶)啟動(dòng)帳戶的帳戶刪除“鎖定內(nèi)存頁”用戶權(quán)限  。

設(shè)置此選項(xiàng)可實(shí)現(xiàn)根據(jù)其他內(nèi)存分配器的請求擴(kuò)大或縮小內(nèi)存,不影響 SQL Server 動(dòng)態(tài)內(nèi)存管理。 使用“鎖定內(nèi)存頁”用戶權(quán)限時(shí),建議按 如上所述,為 max server memory 設(shè)置一個(gè)上限   。

重要

應(yīng)僅在必要時(shí)設(shè)置此選項(xiàng),即有跡象表明正在換出 sqlservr 進(jìn)程時(shí)。在這種情況下,錯(cuò)誤日志將報(bào)告錯(cuò)誤 17890,類似于以下示例: A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: #### seconds. Working set (KB): ####, committed (KB): ####, memory utilization: ##%. 從 SQL Server 2012 (11.x) 開始,Standard Edition 不需要 跟蹤標(biāo)志 845 來使用“鎖定頁”。

啟用“鎖定內(nèi)存頁”

啟用“鎖定內(nèi)存頁”選項(xiàng):

  1. “開始”菜單上,單擊 “運(yùn)行”。 在“打開”  框中,鍵入 gpedit.msc

    將打開 “組策略”對(duì)話框。

  2. “組策略”控制臺(tái)上,展開 “計(jì)算機(jī)配置”,再展開 “Windows 設(shè)置”。

  3. 展開 “安全設(shè)置”,再展開 “本地策略”。

  4. 選擇 “用戶權(quán)利指派”文件夾。

    細(xì)節(jié)窗格中隨即顯示出策略。

  5. 在該窗格中,雙擊“鎖定內(nèi)存頁”  。

  6. 在“本地安全策略設(shè)置”對(duì)話框中,添加有權(quán)運(yùn)行 sqlservr.exe ( SQL Server 啟動(dòng)帳戶)的帳戶  。

當(dāng)前標(biāo)題:SQLServer因?yàn)镺S虛擬內(nèi)存不足而hang住異常解決-鎖定內(nèi)存頁(LPIM)
路徑分享:http://bm7419.com/article12/igdogc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、App開發(fā)、外貿(mào)建站、微信小程序、做網(wǎng)站、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名