Linux

是否有任何理由在 CentOS (DigitalOcean) 上沒有交換文件

  • May 29, 2014

我正在使用 CentOS 6.5 在 DigitalOcean 上執行一個站點。

正如其他地方所指出的,DigitalOcean 伺服器預設配置為沒有任何類型的交換,我想知道是否應該添加一個。

我對這些東西的了解足以認為答案是“當然可以”,但我真的沒有超越這一點的基礎。

  • 我的系統在第一次嚴重載入使用者和記憶體需求時會當機嗎?
  • 交換會不會讓我擺脫這種情況,但只能通過施加令人不快的性能打擊?

在這方面的任何建議,無論是否針對 DigitalOcean,都將不勝感激。

是否有任何理由在 CentOS 上沒有交換文件

是的:

  • 您有某種類型的水平擴展,可以根據記憶體使用量增加伺服器數量,從而消除使用交換的可能性。
  • 您有一個特定的性能要求,這意味著您不能允許您的程序使用交換進行處理,因為它比記憶體慢得多,因此您選擇密切監視記憶體使用情況並根據需要增加記憶體,而不是使用交換。

我的系統在第一次嚴重載入使用者和記憶體需求時會當機嗎?

如果您不知道您的伺服器將承受多少負載,並且您沒有足夠的記憶體,並且您沒有交換空間,您的應用程序將停止。

交換會不會讓我擺脫這種情況,但只能通過施加令人不快的性能打擊?

正確的。

當應用程序停止時究竟會發生什麼?哪個應用程序停止?

如果我有 3 個程序並且 1 個正在洩漏記憶體,那麼所有 3 個程序都會死掉還是洩漏的 1 個程序會死掉?

1會強迫另外2個死嗎?

可以這樣想:

如果您編寫一個程序並告訴程序用無限數量的整數填充一個變數,那麼該應用程序很快就會遇到記憶體錯誤並退出。

一樣的。無論哪個應用程序試圖為其操作訪問更多記憶體都會失敗。因此,如果您還有 1 個字節,而您的應用程序創建了一個 32 位整數,那麼您需要 2 個字節,則操作會因為記憶體不足而失敗,並且取決於應用程序處理記憶體錯誤的能力,它會自行修復或退出。

一次3個應用程序也是如此。如果碰巧在系統只剩下 1 個字節的記憶體時它們都請求更多記憶體,那麼從技術上講,它們都應該立即失敗。

如果他們看到任何錯誤,有人可以糾正我。

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