我正在使用 CentOS 6.5 在 DigitalOcean 上运行一个站点。
正如其他地方所指出的,DigitalOcean 服务器默认配置为没有任何类型的交换,我想知道是否应该添加一个。
我对这些东西的了解足以认为答案是“当然可以”,但我真的没有超越这一点的基础。
- 我的系统在第一次严重加载用户和内存需求时会死机吗?
- 交换会不会让我摆脱这种情况,但只能通过施加令人不快的性能打击?
在这方面的任何建议,无论是否针对 DigitalOcean,都将不胜感激。
我正在使用 CentOS 6.5 在 DigitalOcean 上运行一个站点。
正如其他地方所指出的,DigitalOcean 服务器默认配置为没有任何类型的交换,我想知道是否应该添加一个。
我对这些东西的了解足以认为答案是“当然可以”,但我真的没有超越这一点的基础。
在这方面的任何建议,无论是否针对 DigitalOcean,都将不胜感激。
是的:
您有某种类型的水平扩展,可以根据内存使用量增加服务器数量,从而消除使用交换的可能性。
您有一个特定的性能要求,这意味着您不能允许您的程序使用交换进行处理,因为它比内存慢得多,因此您选择密切监视内存使用情况并根据需要增加内存,而不是使用交换。
如果您不知道您的服务器将承受多少负载,并且您没有足够的内存,并且您没有交换空间,您的应用程序将停止。
正确的。
可以这样想:
如果您编写一个程序并告诉程序用无限数量的整数填充一个变量,那么该应用程序很快就会遇到内存错误并退出。
一样的。无论哪个应用程序试图为其操作访问更多内存都会失败。因此,如果您还有 1 个字节,而您的应用程序创建了一个 32 位整数,那么您需要 2 个字节,则操作会因为内存不足而失败,并且取决于应用程序处理内存错误的能力,它会自行修复或退出。
一次3个应用程序也是如此。如果碰巧当系统只剩下 1 个字节的内存时它们都请求更多内存,那么从技术上讲,它们都应该立即失败。
如果他们看到任何错误,有人可以纠正我。
查看有关 swappiness 设置的页面:http ://www.scottalanmiller.com/linux/2012/09/03/controlling-swappiness-in-linux/
您可以更改您的 swappiness,以便您的系统不会过于频繁地使用交换空间,从而不会对性能造成太大影响。
首先安装 sysstat(如果尚未安装)并监控几天的资源使用情况。运行“sar -r”并经常监控内存使用情况。大多数时候内存使用率将接近 90%,请注意“kbcached”和“kbbuffers”列。如果他们使用了大部分内存,那么你很好,因为这意味着应用程序被缓存了。但如果这些值较小,则意味着缓存较少,因为实际内存使用量较多,这也可能表明您的应用程序需要更多 RAM。因此,您可以增加 RAM 或设置交换空间。
现在要交换,我相信数字海洋磁盘在 SSD 上。如果是这种情况,设置一个交换文件,你应该不会看到任何性能损失,因为 SSD 比 HDD 快。
HTH。