當前位置:首頁 » 雲伺服器 » 如何排查伺服器佔用內存過高

如何排查伺服器佔用內存過高

發布時間: 2023-04-17 20:56:56

linux佔用內存太高,有沒有好的解決辦法呀

且體的還得看伺服器的配置。
一般有如下幾種可能:
1) 有程序佔用大量CPU,使用top命令來檢查(看看是否有java程序鎖死之類的故障)
2) 有程序佔用大量內存,使得內存真正不夠用了(這個才是真正需要加內存的時候),比如由於Mysql在較大負載下運行容量為GB級別的資料庫導致內存不夠用,需要給伺服器插入更多物理內存
3) 磁碟系統讀寫故障,IO吞吐錯誤造成CPU負載上升,需要光碟引導進入單用戶模式掃描修復磁碟。

但也可以手動進行內存釋放,具體操作如下:
[root@dbserver01 mysql]# cat /proc/sys/vm/drop_caches0

首先,/proc/sys/vm/drop_caches的值,默認為0
[root@dbserver01 mysql]# sync

手動執行sync命令(描述:sync 命令運行 sync 子常式。如果必須停止系統,則運行 sync 命令以確保文件系統的完整性。sync 命令將所有未寫的系統緩沖區寫到磁碟中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件) 《Linux就該這么學》 一起學習。
[root@dbserver01 mysql]# echo 3 > /proc/sys/vm/drop_caches
[root@dbserver01 mysql]# cat /proc/sys/vm/drop_caches
3

將/proc/sys/vm/drop_caches值設為3 [root@dbserver01 mysql]# free -m

② SQL Server佔用內存過高,什麼原因導致的,用什麼方法可以解決

SQL Server運行越久,佔用內存會越來越大。因為sql server本身內存回收機製做的不好,這是微軟系列的伺服器&資料庫問題的通病。

解決SQL Server佔用內存過高的方法:

1.定期重啟SQL Server 2008 R2資料庫服務即可。

拓展資料

SQL Server 是Microsoft 公司推出的關系型資料庫管理系統。具有使用方便可伸縮性好與相關軟體集成程度高等優點,可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2012 的大型多處理器的伺服器等多種平台使用。

Microsoft SQL Server 是一個全面的資料庫平台,使用集成的商業智能 (BI)工具提供了企業級的數據管理。Microsoft SQL Server 資料庫引擎為關系型數據和結構化數據提供了更安全可靠的存儲功能,使您可以構建和管理用於業務的高可用和高性能的數據應用程序。

網路Microsoft SQL Server

③ Linux系統CPU/內存使用率過高的問題排查

    伺服器出現由內存問題引發的故障,例如系統內部服務響應速度變慢、伺服器登錄不上、系統觸發 OOM(Out Of Memory)等。通常情況下當實例內存使用率持續高於90%時,可判斷為實例內存使用率過高。CPU/內存使用率過高的問題原因可能由硬體因素、系統進程、業務進程或者木馬病毒等因素導致。

    筆者以前寫過一篇文章- Linux 下的 60 秒分析的檢查清單 ,適用於 任何性能問題 的分析工作,這一篇文章是關於CPU/內存使用率的具體的排查思路總結。

    執行 top 命令後按  M ,根據駐留內存大小進行排序,查看 「RES」 及 「SHR」 列是否有進程佔用內存過高。按 P,以 CPU 佔用率大小的順序排列進程列表,查看是否有進程佔用cpu過高。

    如果有異常進程佔用了大量 CPU 或內存資源,記錄需要終止的進程 PID,輸入k,再輸入需要終止進程的 PID ,按 Enter。

    另外說明一下,top 運行中可以通過 top 的內部命令對進程的顯示方式進行控制,最常用的是M和P。

    CPU 空閑但高負載情況,Load average 是 CPU 負載的評估,其值越高,說明其任務隊列越長,處於等待執行的任務越多。執行ps -axjf命令,查看進程狀態,並檢查是否存在 D 狀態進程。D 狀態指不可中斷的睡眠狀態,該狀態進程無法被殺死,也無法自行退出。若出現較多 D 狀態進程,可通過恢復該進程依賴資源或重啟系統進行解決。

    Linux 系統通過分頁機制管理內存的同時,將磁碟的一部分劃出來作為虛擬內存。而 kswapd0 是 Linux 系統虛擬內存管理中負責換頁的進程。當系統內存不足時,kswapd0 會頻繁的進行換頁操作。換頁操作非常消耗 CPU 資源,導致該進程持續佔用高 CPU 資源。

    執行top命令,找到 kswapd0 進程。觀察 kswapd0 進程狀態,若持續處於非睡眠狀態,且運行時間較長並持續佔用較高 CPU 資源,執行 vmstat ,free,ps 等指令,查詢系統內進程的內存佔用情況,重啟系統或終止不需要且安全的進程。如果 si,so 的值也比較高,則表示系統存在頻繁的換頁操作,當前系統的物理內存已經不能滿足您的需要。  si  表示每秒從交換區寫入內存的大小(單位:kb/s) , so  每秒從內存寫到交換區的大小。

    執行cat/proc/meminfo |grep-i shmem命令查看共享內存。

        buddy可以以頁為單位獲取連續的物理內存了,即4K為單位。slab負責需要頻繁的獲取/釋放並不大的連續物理內存,比如幾十位元組。執行cat /proc/meminfo | grep -i SUnreclaim命令查看slab 內存。

        標準的 4KB 大小的頁面外,內存大頁管理內存中的巨大的頁面,處理較少的頁面映射表,從而減少訪問/維護它們的開銷。執行cat /proc/meminfo | grep -iE "HugePages_Total|Hugepagesize" 查看內存大頁。

內存使用率計算:

 (Total - available)100% / Total

(Total - Free - Buffers - Cached - SReclaimable + Shmem)* 100% / Total

  cat /proc/meminfo查看信息含義:

④ 伺服器空間爆滿的檢查及處理方法

首先必須使用 ssh 工具連接伺服器,在 windows 環境下推薦使用: SecureCRT

使用下面命令進行登錄:

鏈接之後會提示輸入密碼,密碼不可見,使用鍵盤輸入完之後直接按回車。

如上圖,存放項目的磁碟空間佔用率為 40% ,項目存放路徑為 /home
並不是所有的總空間都可以存放文件,所以已使用空間未達到484G 的之前佔用率將會達到100%,觀察空間是否爆滿,主要以佔用率為參考。

使用命令到達項目所在目錄:

接著,使用命令到達項目備份目錄:

之後,使用命令查看備份文件:

使用命令查看備份文件大小:

可以看到備份文件有大和小兩種, 刪除的時候請留下時間最近一次大備份

使用以下命令進行文件刪除:
這個命令非常之危險,沒有任何挽救的餘地

一般情況,刪除成功沒有任何提示(沒有消息就是好消息),偶爾會看到系統接收到一條新消息的提示,這個對刪除操作沒有影響。
之後,我們可以重復上述操作,直到留下 時間最近一次大備份
最後,可以用上面提到的命令確認磁碟空間。

END

熱點內容
app什麼情況下找不到伺服器 發布:2025-05-12 15:46:25 瀏覽:713
php跳過if 發布:2025-05-12 15:34:29 瀏覽:466
不定時演算法 發布:2025-05-12 15:30:16 瀏覽:129
c語言延時1ms程序 發布:2025-05-12 15:01:30 瀏覽:163
動物園靈長類動物配置什麼植物 發布:2025-05-12 14:49:59 瀏覽:732
wifi密碼設置什麼好 發布:2025-05-12 14:49:17 瀏覽:147
三位數乘兩位數速演算法 發布:2025-05-12 13:05:48 瀏覽:396
暴風影音緩存在哪裡 發布:2025-05-12 12:42:03 瀏覽:539
access資料庫exe 發布:2025-05-12 12:39:04 瀏覽:627
五開的配置是什麼 發布:2025-05-12 12:36:37 瀏覽:363