一、為什么很多Linux軟件的安裝教程都要求關(guān)閉swap
swap是內(nèi)存不夠用的時候,臨時用一點兒磁盤空間代替內(nèi)存。
出現(xiàn)的問題,就是程序在用內(nèi)存的時候,可能會用到swap,相應(yīng)的IO能力下降。
關(guān)掉就不會出現(xiàn)這個問題,但是關(guān)掉以后,內(nèi)存超出設(shè)定值,程序就可能會直接崩掉。崩掉的結(jié)果,好一點兒的會重啟,差一點兒的會崩潰,看具體是什么程序。
如果只是web這樣的程序,大多都是k8s或者是docker這樣的集群、容器,崩幾個節(jié)點無所謂。
如果是mysql這樣的數(shù)據(jù)庫,一般也不用容器,因為根本就不考慮mysql掛掉自動重啟的使用狀況。
mysql一般都設(shè)置有內(nèi)存使用上限,設(shè)置使用內(nèi)存的75%或者80%,不能讓它滿了,用到swap反而會下降mysql性能。
也還要看機器配置,Linux的內(nèi)存機制是盡量多的使用內(nèi)存。swap在一般運行時占用情況不多。但是有些內(nèi)存很小的arm板子沒有swap很多軟件在編譯時會因為內(nèi)存不足導(dǎo)致編譯報錯而中斷。如果內(nèi)存非常大的話可以關(guān)閉swap,配置一般還是推薦保留一點或者代替運存。
延伸閱讀:
二、swap的主要功能
(1)、當(dāng)物理內(nèi)存不足的時候,將某些在內(nèi)存中所占用的程序暫時移動到swap當(dāng)中,讓物理內(nèi)存可以被需要的程序來使用;
(2)、Linux會將內(nèi)存中不常訪問的數(shù)據(jù)保存到swap中,當(dāng)系統(tǒng)需要再次調(diào)用的時候,就把它從swap加載到內(nèi)存;
(3)、如果你的主機支持電源管理模式,也就是說,你的Linux主機系統(tǒng)可以進入”休眠”模式的話,那么,運行當(dāng)中的程序狀態(tài)則會被記錄到swap中去,以作為”喚醒”主機狀態(tài)的依據(jù);
(4)、在某些程序運行時,本來就會利用swap特性來存放一些數(shù)據(jù),比如在裝Oracle11g的時候會檢查swap size。