我们是否真的需要在 ubuntu-server 上用 LAMP 交换分区?我想我不需要它,但最好确定它是否不会导致一些不可预测的行为。
其实我的想法是:
我可以关闭生产服务器的交换吗?
谢谢!
Oli*_*Oli 14
我可以关闭生产服务器的交换吗?
不。总是有一些交换空间。
大约一周后,我尝试在没有交换的情况下运行生产服务器,在 Wordpress 更新后,PHP 开始消耗比我们考虑的更多的 RAM。当您用完 RAM 并且启用了交换时,事情会变慢(有时会变慢,有时会变慢,具体取决于其中的内容),但您可以登录,找到问题并尝试修复它。
当您用完 RAM 并且没有交换时,进程就会死亡,事情会停止,并且很多时候您唯一的选择是重新启动。但是,在您重新启动之前,事情可能会中断。
在我的世界里,破比慢还糟糕。
当然,如果你发现你的系统一直在使用大部分交换(它经常使用一些只是作为移出旧缓存内容的一种方式),你显然有问题(“请插入 RAM”),但是将它作为绝对推荐使用安全网。
回应 SpamapS 的评论:
在“成功网站”的世界中,您拥有热故障转移、负载平衡和其他工具,可以让机器爆炸并对网站的其余部分产生零影响。但这需要大量现金。对于大多数站点来说,拥有冗余硬件并不经济,即使它们能赚钱。
我完全不同意您对正常运行时间的评论。在传统的电子商务设置中,如果人们看不到您的网站,他们就无法向您购买。这不仅仅是电子商务,如果您在任何时期感到沮丧,所有在线商业利益都会受到更多打击。我知道是因为我为公司托管网站和服务并运行我自己的网站。慢 = 脾气暴躁但向下 = 愤怒。即使您一次只关闭一分钟,如果用户多次看到“停机维护”通知,他们也会认为您无法保持网站正常运行。
缓慢的服务器不太理想,但交换并不是一直在运行,这是在修复它们时允许事情继续运行的最后手段。
您还假设机器上只运行一项服务。同样,如果您有大量资金来拆分所有内容,这可能是正确的,但在现实世界中,事情会混在一起。多个网站、ssh 守护进程、ftp 服务器、电子邮件服务器等。泄漏到交换中的一个进程甚至可能不会影响另一项服务。如果没有交换,一切都有平等的机会立即随机终止。你无法控制它。
当然,交换并不是唯一的答案。您需要监控以在内存不足时提醒您,但对于大多数人来说,仅仅拔掉插头并重新启动并不是解决方案。我确信这适用于您负责的任何跨国网站,但对于我们这些凡人(占互联网的大部分),这样做是商业自杀。
我不得不不同意在生产服务器上进行交换。
根据我的经验,旋转磁盘交换使您的系统更难预测,更容易出现令人沮丧的整个系统故障。使用本地慢速磁盘执行任何操作的高负载、流行的服务器将迅速陷入比故障状态更糟糕的状态。响应时间将增加到正常水平的 100 倍,而通过控制台或 ssh 登录等简单操作可能需要几分钟。
SSD 交换是一种特殊情况,至少可以消除通常会杀死系统的寻道时间减慢。但是,写入仍然很慢,因此您仍然需要等待很长很长时间才能从失控的过程中恢复。
如果没有交换,您的 LAMP 服务器将简单地终止进程以释放 RAM。适当的监控应提醒您注意这一点,并在关键进程被终止时将服务器从生产中移除。这里最糟糕的情况是您的登录方法都被取消了,您必须进行硬重置/电源循环。这种最坏的情况仍然与失控的交换机一样可能,但更难检测。
如果您使用的是 PHP,请启用内存限制,并监控您的日志是否有故障。这是一个技巧,将开发服务器上的限制设置为低于生产中的限制。如果您在 apache 下使用 mod_php,请将 MaxRequestsPerChild 设置为几千,以便 httpd 在随着时间的推移变得过大之前死亡。最重要的是,监控内存使用情况!通常情况下,内存会随着时间的推移而增加,您只需要在调试问题时定期重新启动泄漏的服务。
归档时间: |
|
查看次数: |
5962 次 |
最近记录: |