Swap

什麼是過度交換

  • March 12, 2011

這篇文章讓我問了這個問題。

記憶體爭用

在大型站點上,如果您使用 MyISAM,則在添加節點或註釋後強制清除記憶體時,數據庫表中會發生爭用。由於需要刪除數以萬計的過濾器文本片段,該表將被鎖定很長時間,並且對它的任何訪問都將排隊等待清除其中的數據。頁面記憶體也是如此。

這通常會導致“站點掛起”一兩分鐘。在此期間,新請求不斷堆積,如果您在 Apache 設置中沒有正確設置 MaxClients 參數,系統可能會因為過度交換而陷入抖動。

當您執行的程序分配的記憶體多於機器的物理 RAM 時,就會發生交換。一些數據被換出到磁碟,並在需要時換回。

這沒關係,只要它不經常發生。磁碟訪問比 RAM 訪問慢得多,因此每次電腦必須交換時,導致它的程序必須在傳輸數據時暫停。

當程序正在使用的記憶體量超過物理記憶體量時,會發生過度交換(也稱為抖動)。電腦將所有時間都花在磁碟和 RAM 之間交換數據上,而實際完成任何工作的時間卻很少。

在您提到的文章中,問題是分叉了太多的 Apache 程序。每個程序都需要一些記憶體,如果 MaxClients 設置得太高,Apache 將繼續分叉子程序,直到它使系統陷入爬行狀態。

引用自:https://unix.stackexchange.com/questions/9051