什麼是swap?
swap space是磁碟上的一塊區域,可以是一個分割區,也可以是一個文件,或是他們的組合。
簡單點說,當系統物理記憶體吃緊時,Linux會將記憶體中不常存取的資料保存到swap上,這樣系統就有更多的物理記憶體為各個進程服務,而當系統需要存取swap上儲存的內容時,再將swap上的資料載入記憶體中,這就是我們常說的swap out和swap in。
為什麼需要swap?
要回答這個問題,就需要回答swap為我們帶來了哪些好處。
對於一些大型的應用程式(如LibreOffice、video editor等),在啟動的過程中會使用大量的內存,但這些內存很多時候只是在啟動的時候用一下,後面的運行過程中很少再用到這些記憶體。有了swap後,系統就可以將這部分不這麼使用的記憶體資料保存到swap上去,從而釋放出更多的物理記憶體供系統使。
許多發行版(如ubuntu)的休眠功能依賴swap分區,當系統休眠的時候,會將內存中的數據保存到swap分區上,等下次系統啟動的時候,再將數據載入到記憶體中,這樣可以加快系統的啟動速度,所以如果要使用休眠的功能,必須要配置swap分割區,而且大小一定要大於等於實體記憶體。
在某些情況下,實體記憶體有限,但又想運行耗記憶體的程式怎麼辦?這時可以透過配置足夠的swap空間來達到目標,雖然慢一點,但至少可以運行。
雖然大部分情況下,物理記憶體都是夠用的,但是總有一些意想不到的狀況,比如某個進程需要的內存超過了預期,或者有進程存在內存洩漏等,當內存不夠的時候,就會觸發核心的OOM killer,根據OOM killer的配置,某些進程會被kill掉或系統直接重啟(預設情況是優先kill耗記憶體最多的那個進程),不過有了swap後,可以拿swap當記憶體用,雖然速度慢了點,但至少給了我們一個去debug、kill進程或是保存目前工作進度的機會。
如果看過Linux記憶體管理,就會知道系統會盡可能多的將空閒記憶體用於cache,以加快系統的I/O速度,所以如果能將不怎麼常用的記憶體資料移動到在swap上,就會有更多的實體記憶體用於cache,從而提高系統整體效能。
swap的缺點?
上面介紹了swap的優點,那swap的缺點呢? swap是存放在磁碟上的,磁碟的速度和記憶體比較起來慢了好幾個數量級,如果不停的讀寫swap,那麼對系統的效能肯定有影響,尤其是當系統記憶體很吃緊的時候,讀寫swap空間發生的頻率會很高,導致系統運作很慢,像死了一樣,這個時候加入實體記憶體是唯一的解決方案。
由於系統會自動將不常用的記憶體資料移到swap上,對桌面程式來說,有可能會導致最小化一個程式後,再開啟時小卡一下,因為需要將swap上的資料重新載入到記憶體中來。
到底要不要swap?
上面介紹了什麼是swap以及它們的優缺點,那麼到底要不要設定swap呢?答案是:看情況。
以下分別討論記憶體不夠用、記憶體勉強夠用和記憶體很充裕這三種情況下伺服器和桌面環境對swap的選擇。
記憶體不夠用
不管是桌面還是伺服器,當實體記憶體明顯不夠用,而又想跑程式的話,加入swap是唯一的選擇,慢點總比不能工作強。
記憶體勉強夠用
建議配置swap,這樣核心會將不常用的資料從記憶體移到swap上,從而有更多的物理記憶體供系統調用,提升系統效能,同時也避免因偶爾的實體記憶體不夠造成進程異常退出,提升系統穩定性,但對伺服器來說,一定要限製或監控swap空間的使用情況,當出現swap空間使用超預期或swap in/out頻繁時,要及時採取措施,不然對性能影響很大
內存充裕
理論上,如果物理內存足夠多並且不需要休眠功能,那swap就沒什麼用,可關鍵問題是我們很難保證物理內存在任何情況下都夠用,因為總有意想不到的情況發生,例如某些進程耗內存超預期,伺服器壓力超預期,內存洩漏等。
目前,我們是明顯記憶體不夠用了,是什麼導致記憶體不夠用了呢?為什麼mysql會直接導致伺服器記憶體不夠了
那我們的mysql的伺服器為什麼會發生swap呢?
假設我們的物理記憶體是16G,swap是4G。如果MySQL本身已經佔用了12G物理內存, 而同時其他程式或者係統模組又需要6G內存,這時候操作系統就可能把MySQL所擁有的一部分地址空間映射到swap上去。
說白了,就是系統認為你mysql佔用的空間太大了,不允許你搞特殊,必須騰出空間讓那個我的其它必要的進程區使用內存,所以你就去比較慢的swap去玩吧!
而mysql中佔記憶體最大的就是innodb_buffer_pool_size了,所以第一時間要考慮到這個值是不是設定不合理的?
MySQL的記憶體消耗分為:
#1.會話層級的記憶體消耗:如sort_buffer_size等,每個會話都會開啟一個sort_buffer_size來進行排序操作
2.全域的記憶體消耗:例如:innodb_buffer_pool_size等,全域共享的記憶體段
以上是Linux Swap空間使用率過高怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

使用Linux維護模式的時機和原因:1)系統啟動問題時,2)進行重大系統更新或升級時,3)執行文件系統維護時。維護模式提供安全、控制的環境,確保操作的安全性和效率,減少對用戶的影響,並增強系統的安全性。

Linux中不可或缺的命令包括:1.ls:列出目錄內容;2.cd:改變工作目錄;3.mkdir:創建新目錄;4.rm:刪除文件或目錄;5.cp:複製文件或目錄;6.mv:移動或重命名文件或目錄。這些命令通過與內核交互執行操作,幫助用戶高效管理文件和系統。

在Linux中,文件和目錄管理使用ls、cd、mkdir、rm、cp、mv命令,權限管理使用chmod、chown、chgrp命令。 1.文件和目錄管理命令如ls-l列出詳細信息,mkdir-p遞歸創建目錄。 2.權限管理命令如chmod755file設置文件權限,chownuserfile改變文件所有者,chgrpgroupfile改變文件所屬組。這些命令基於文件系統結構和用戶、組系統,通過系統調用和元數據實現操作和控制。

MaintenancemodeInuxisAspecialBootenvironmentforforcalsystemmaintenancetasks.itallowsadMinistratorStoperFormTaskSlikerSettingPassingPassingPasswords,RepairingFilesystems,andRecoveringFrombootFailuresFailuresFailuresInamInimAlenimalenimalenrenmentrent.ToEnterMainterMainterMaintErmaintErmaintEncemememodeBoode,Interlecttheboo

Linux的核心組件包括內核、文件系統、Shell、用戶空間與內核空間、設備驅動程序以及性能優化和最佳實踐。 1)內核是系統的核心,管理硬件、內存和進程。 2)文件系統組織數據,支持多種類型如ext4、Btrfs和XFS。 3)Shell是用戶與系統交互的命令中心,支持腳本編寫。 4)用戶空間與內核空間分離,確保系統穩定性。 5)設備驅動程序連接硬件與操作系統。 6)性能優化包括調整系統配置和遵循最佳實踐。

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

Linux的維護模式可以通過GRUB菜單進入,具體步驟為:1)在GRUB菜單中選擇內核並按'e'編輯,2)在'linux'行末添加'single'或'1',3)按Ctrl X啟動。維護模式提供了一個安全環境,適用於系統修復、重置密碼和系統升級等任務。

進入Linux恢復模式的步驟是:1.重啟系統並按特定鍵進入GRUB菜單;2.選擇帶有(recoverymode)的選項;3.在恢復模式菜單中選擇操作,如fsck或root。恢復模式允許你以單用戶模式啟動系統,進行文件系統檢查和修復、編輯配置文件等操作,幫助解決系統問題。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Dreamweaver CS6
視覺化網頁開發工具