-
檢視 proc meminfo
溫馨提示:“大記憶體頁面”又稱傳統的大頁面、大頁面記憶體等,幫助Linux管理虛擬記憶體,標準記憶體頁面為4kb,這裡使用“大記憶體頁面”可以定義最大1GB的頁面大小,在系統啟動時可以使用“大記憶體頁面”為應用預留一部分記憶體, 這部分記憶體被占用,永遠不會從記憶體中換出,它將一直保留在那裡,直到配置更改。(詳情請見以下鏈結進行官方說明)。
那麼誰被分配了這麼大的頁面記憶體呢?
查詢:shell> proc sys vm hugetlb shm group
shell> id 27
uid=27(mysql) gid=27(mysql) groups=27(mysql)
hugetlb shm group 檔案填寫了指定大頁面記憶體的使用者組 ID,這裡可以看到是 mysql 組 id,那麼既然給了 mysql,為什麼 free 等於 total,而 mysql 仍然只有 20 多 g 的實際使用記憶體?
原來,MySQL中有乙個引數專門啟用大記憶體頁,MySQL中的大記憶體頁稱為大頁。
檢視 MySQL 配置檔案。
發現配置檔案中確實存在大頁配置,但為了禁用狀態。
在與業務確認後,我很久以前確實啟用了MySQL的大頁面,但後來被禁用了。 檢查完這一點,基本上就有了結論。
結論。 這套環境之前開啟了20000個大記憶體頁面,每個頁面大小為2MB,占用40G記憶體空間,供mysql使用,而mysql開啟了大頁面,但是後來不使用的時候,只關閉了mysql端的大頁面引數,但實際上並沒有改變主機在大記憶體頁面上的配置, 所以其實主機上還有20000個大記憶體頁,而且沒有使用,這部分閒置了很長時間,其他程式都用不上了。
所以 mysql 使用的是 20g 左右的記憶體,整個主機的記憶體都飽和了,然後在某些條件下觸發了 OOM,導致 mysqld 被殺,但是主機上有乙個 mysqld 安全守護程序,所以又被拉了起來,我在文章開頭看到了偶爾的斷線現象。
-
伺服器記憶體使用率過高的解決方法:
1.首先,通過任務管理器對程序進行排序,找到占用大量記憶體的程式程序。 通常占用記憶體較多的程序包括w3wp、sqlserver等;
2. 站點程序 w3wp 可以通過 cmd 命令旁邊的 slag 行中的 iisapp 命令連線到 *** 記憶體占用。 可以通過設定**時間、最大記憶體使用值或池化程序池來降低記憶體使用量,但如果要保證**的訪問質量,建議公升級到更高的型號來解決問題;
3.資料庫SQL Server也可以通過資料庫的企業管理器設定最大記憶體占用,但是如果必須開啟第乙個程式占用大記憶體,設定後會出現頁面錯誤、打不開等問題;
4. MySQL本身會占用大量的虛擬記憶體,如果不使用MySQL資料庫,可以停止使用。
問題。 我們有乙個 sql 可以查詢沒有主鍵唯一鍵的表,但它在 mysql 上執行得很慢,我該怎麼辦? >>>More
現代人力資源管理包括八個模組:人力資源規劃、人員招聘和調配、培訓開發與實施、績效考核與實施、薪酬與福利、人事管理、職業管理和員工關係管理。