Linux

我應該完全關閉 linux 網路伺服器的交換嗎?

  • May 1, 2013

最近我的朋友告訴我,在有足夠記憶體的 Linux 網路伺服器上關閉交換是個好主意。我的伺服器有 12 GB,目前在峰值負載下使用 4 GB(不包括記憶體和緩衝區)。

他的論點是,在正常情況下,伺服器永遠不會使用其所有 RAM,因此它遇到 OutOfMemory 情況的唯一方法是由於一些錯誤/ddos/等。因此,如果關閉交換,系統將耗盡記憶體,最終會導致程序佔用記憶體(很可能是 Web 伺服器程序)和其他一些程序崩潰。如果交換已打開它會吃掉 RAM 和交換,最終會導致同樣的崩潰,但在此之前,它會將 sshd 等關鍵程序解除安裝到交換並開始執行大量交換操作,從而導致嚴重減速。這樣,當在 ddos​​ 系統下,由於巨大的滯後,可能會進入完全不可用的狀態,我可能無法登錄並終止 webserver 程序或拒絕所有傳入流量(除了 ssh)。

這是正確的嗎?我是否遺漏了一些東西(例如即使我有足夠的 RAM,交換分區在某些方面也非常有用)?我應該把它關掉嗎?

我會說這取決於您的案例,其餘的答案已經很好地涵蓋了這一點。4G的swap畢竟是購買一些安全的廉價方式。而且我覺得這種便宜是讓人們不想把它關掉的原因。

但讓我用一個反問來回答。如果錢不是問題,並且您可以在兩個系統之間進行選擇 - 一個具有 12G 記憶體和 4G 交換空間,另一個具有 16G 記憶體且沒有交換空間 - 您會選擇哪一個?不幸的是,大多數人仍然會回答他們會選擇 16G 的 RAM 並仍然添加 4G 的交換空間,這與我的觀點無關。

另一方面,我個人發現交換系統比崩潰的系統更糟糕。崩潰的系統會觸發備用備份伺服器更快地接管。在主動-主動(或負載平衡設置)中,崩潰的系統將更快地退出旋轉。無交換系統再次獲勝。

引用自:https://serverfault.com/questions/352431