发布大型机构会导致我们的堆栈崩溃 - 但仅限于生产模式?

时间:2009-10-10 01:52:07

标签: ruby-on-rails ruby passenger rack

4 个答案:

答案 0 :(得分:0)

我能理解的是config.whiny_nils正在完全改变。 如果你,我会看activesupport/lib/active_support/whiny_nils.rb文件(看起来很简单),并尝试从那里开始玩,以了解是什么产生了不同。 我相信它与您在生产环境中获得的异常类型有关,在使用whiny_nils时可能不会引发异常。

我相信你需要提供更多有关“发布大型机构崩溃我们的堆栈”部分的细节,因为它可能是Rack和Ruby 1.9的问题

答案 1 :(得分:0)

从外观上看,这个错误是Ruby对编码的不确定性。你有一个它认为是UTF-8的字符串,你可能把它视为原始字节,可能是正确的。您需要识别有问题的字符串并在其上调用buggy_string.force_encoding(Encoding::ASCII_8BIT)。但是,如果我知道哪一段代码在该字符串上运行,或者为什么它只在生产中发生呢?我不会惊讶地发现这个问题实际上是在乘客的内心深处。

关于暂存和生产之间的区别,几乎可以肯定的是,应该作为字节字符串移动的东西存在问题,并且它被视为字符串。有大量的代码只发生在生产环境中(比如缓存),如果有任何代码执行此操作,那就是你的问题。

whiny_nils事情可能无关紧要。

答案 2 :(得分:0)

我会尝试在apache / passenger上生成应用程序,看看问题是否特定于nginx / passenger

答案 3 :(得分:0)

过去几个月我遇到了类似的问题 - 直到最近才真正调试它。在我的例子中,告诉Passenger在哪里放置临时缓冲文件就可以了。难以找到的不仅是日志文件中缺少错误消息,而且这个缓冲区不仅用于多部分帖子,还用于任何类型的大型帖子。

PassengerUploadBufferDir /tmp