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

Jim*_*ler 2 linux centos swap

我正在使用 CentOS 6.5 在 DigitalOcean 上运行一个站点。

正如其他地方所指出的,DigitalOcean 服务器默认配置为没有任何类型的交换,我想知道是否应该添加一个。

我对这些东西的了解刚好足以认为答案是“当然可以”,但我真的没有超越它的基础。

  • 我的系统第一次被用户和内存需求严重加载时会死吗?
  • 交换会不会让我避免这种情况,但只会造成令人不快的性能损失?

在这方面的任何建议,无论是否特定于 DigitalOcean,都将不胜感激。

Vas*_*kis 12

是否有任何理由在 CentOS 上没有交换文件

是的:

  • 您有某种类型的水平扩展,可以根据内存使用情况增加服务器数量,从而消除使用交换的可能性。

  • 您有一个特定的性能要求,这意味着您不能允许程序使用交换进行处理,因为它比内存慢得多,因此与其使用交换,不如选择密切监视内存使用情况并根据需要增加内存。

我的系统第一次被用户和内存需求严重加载时会死吗?

如果您不知道您的服务器将承受多少负载,并且您没有足够的内存,并且您没有交换空间,您的应用程序将停止。

交换会不会让我避免这种情况,但只会造成令人不快的性能损失?

正确的。

应用程序停止时究竟会发生什么?哪个应用程序停止?
如果我有 3 个进程并且 1 个正在泄漏内存,那么 3 个进程会全部死亡还是泄漏的 1 个都会死亡?
1 会迫使其他 2 死吗?

可以这样想:

如果您编写一个程序并告诉程序用无限数量的整数填充变量,那么该应用程序很快就会遇到内存错误并退出。

一样的。无论哪个应用程序试图为其操作访问更多内存都将失败。因此,如果您还剩 1 个字节并且您的应用程序创建了一个 32 位整数,则您需要 2 个字节,操作失败,因为没有足够的内存,并且根据应用程序处理内存错误的程度,它会自行修复或退出。

一次 3 个应用程序也是如此。如果巧合的是,当系统只剩下 1 个字节的内存时,它们都请求更多的内存,从技术上讲,它们应该都会立即失败。

如果他们看到任何错误,有人可以纠正我。