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