我使用CentOS 6.5在DigitalOcean上运行一个站点。
正如其他地方已经指出的那样,DigitalOcean服务器默认configuration没有任何交换,我想知道是否应该添加一个。
我对这些东西知之甚less,认为答案是“当然好”,但是我没有超越这个的基础。
在这方面的任何build议,具体到DigitalOcean或不,将不胜感激。
有什么理由在CentOS上没有交换文件
是:
您有一些types的水平扩展,根据内存使用情况增加服务器的数量,从而消除了使用交换的可能性。
你有一个特定的性能要求,这意味着你不能允许你的程序使用交换进行处理,因为它比内存要慢很多,所以不是使用交换,而是select紧密地监视内存使用情况,并根据需要增加内存。
我的系统是否会在第一次因为用户和内存需求而受到严重的影响而死亡?
如果你不知道你的服务器会有多less负载,并且你没有足够的内存,并且你没有交换空间,你的应用程序将停止。
会换掉救我,但只有通过施加一个不愉快的performance打击?
正确。
当应用程序停止时究竟发生了什么? 哪个应用停止?
如果我有3个进程,1个正在泄漏内存,那么所有3个进程死亡或1个正在泄漏死亡?
会迫使其他2死吗?
像这样想:
如果你创build一个程序并告诉程序填充一个无限量的整型variables,那么应用程序很快就会遇到一个内存错误,它将退出。
一样的。 无论哪个应用程序试图访问更多的内存,它的操作将失败。 所以,如果你剩下1个字节,你的应用程序创build一个32位整数,你需要2个字节,操作失败,因为没有足够的内存,并根据应用程序处理内存错误的程度,它会自行修复或退出。
同样的3个应用程序一次。 如果巧合的是,当系统只剩下1个字节的内存时,它们都要求更多的内存,它们在技术上应该全部失败。
有人可以纠正我,如果他们看到任何错误。
Will swap save me from that, but only by imposing an unpleasant performance hit?
查看关于swappiness设置的页面: http : //www.scottalanmiller.com/linux/2012/09/03/controlling-swappiness-in-linux/
你可以改变你的swappiness,这样你的系统就不会太频繁地使用交换空间,因此不会像性能那么大。
首先安装sysstat(如果还没有安装的话),并监视几天的资源使用情况。 运行“sar -r”并频繁监视内存使用情况。 大部分时间内存使用率将接近90%,请观看“kbcached”和“kbbuffers”列。 如果他们正在使用大部分的内存,那么你就没事了,因为这意味着应用程序被caching了。 但是,如果这些值较less,这意味着caching是由于更多的实际内存使用量,这也可能表明您的应用程序需要更多的RAM。 所以你可以增加内存或设置交换空间。
现在交换,我相信数字海洋磁盘在SSD上。 如果是这样的话,build立一个交换文件,你不应该看到任何性能打击,因为SSD比HDD快。
HTH。