首页 » 科技 » Rails迷思2:每天崩溃400次?

Rails迷思2:每天崩溃400次?

Rails每天都会崩溃400次么?让我来澄清这一切吧。

Tags:Rails | DHH | crash

Zed Shaw碰到了一次臭名昭著的崩溃事件,让我们好像看到一个怒气冲天的男人在对所有的东西又叫又骂的样子。这篇文章让很多人感觉沮丧,我当然更甚,因为在这篇文章里看到的Zed并不是跟我一起在芝加哥吃饭并愉快地进行了多次交流的Zed。我曾经以为肯定是Zed遇到了一些难以解决的麻烦,他需要帮助,但从其他人处我获知事情并不是这样的(Zed也从来没有回复过我的邮件)。

Zed的糟糕情绪并不是我想多说的。但他的文章确实引起了很多问题,特别是影响了公众对于Rails的认识,所以我想针对Zed的攻击做一些解释。

此声明的缘由

Zed暗示说Rails每天重启400次是再正常不过的事情,因为Basecamp曾经一度使用一个内存监控器,而当内存达到160M 250MB时它就会重启Mongrels FCGI。这些FCGI会在收到命令后悄然退出并重启--没有崩溃,没有数据丢失,也没有500s(服务器错误)。

但即使这样,不断的重启始终让人难以接受--没有人会喜欢内存泄露。令人安慰的是,一个补丁出现并解决了问题。我相信这个修补在2006年的某个时候就已经完成了,这么久远的故事Zed却为此在2007年年底发布了一个所谓“爆炸性新闻”,我有点无法理解。

但仍然有很多朋友不了解内中情形。至今为止,我已经收到了一堆邮件,都在抱怨说他们在跟客户商谈的时候,客户老拿出Zed的“刁难”:我们不能用Rails,因为它每天会重启400次。嗯,是么?

事实是:Rails不会每四分钟就爆炸一次

好吧,让我们细心地给大家澄清这一切:Rails不会毫无缘由地谋杀自己然后重启。如果我们确实曾经有些bug会导致Rails崩溃,那也肯定是红色警戒级的bug,难道会留到现在么?

当然,我们也承认,Rails仍然会有内存泄露的问题,这跟用户如何使用是很有关系的,就像任何其它平台上的应用程序一样。

更新:Zed指出泄露的情况是发生在Basecamp仍在FCGI上时,而不是Mongrel,这的确没错。而我不知道他的澄清会给这件事情的性质带来什么变化(我们当初已经很快地修正了这个问题,而且我们的小程序在Mongrel上还是会有泄露的情况发生),但让我们都远离情绪,回到事实来吧。

【本文翻译仅为外语学习及阅读目的,原文作者个人观点与译者及译言网无关】

0

返回正文评论

      实际上,“before fastthread we had _400 restarts/day
      ”这句话是DHH大神自己说的……

      而Zed对此的回复是“and that's still fastcgi right?”

      是DHH自己出言不慎,这个Rails丑闻,是DHH自己爆的。

      看回Zed的原文,Zed在这里嘲笑的不是Rails,而是DHH本人。

      Repeat that to yourself. “He couldn’t keep his own servers running for longer than 4 minutes on average.”

      DHH负责的Basecamp是在使用了Mentalguy开发的fastthread之后才避免了每天400次的进程重启。

      如果没有fastthread,DHH大神有可能依旧选择每天重启进程400次;连DHH大神都如此,更不用说别人。