Ruby on rails 为什么nginx+;unicorn在异常时返回504超时(而不是堆栈跟踪)?

Ruby on rails 为什么nginx+;unicorn在异常时返回504超时(而不是堆栈跟踪)?,ruby-on-rails,ruby-on-rails-3.1,nginx,unicorn,Ruby On Rails,Ruby On Rails 3.1,Nginx,Unicorn,在某些情况下,当代码中出现错误时(通常是部分变量命名错误,但也可能是其他变量),我从nginx获得504超时,而不是预期的堆栈跟踪(在开发环境中) 同样,规范似乎也会在相同的错误上暂停(而不是立即报告“失败”) 任何关于我应该调查什么或者我的设置可能有什么问题的想法都会很有帮助 我使用的是RubyonRails3.1。您是否使用了任何类型的异常捕获或异常通知?它可以在您的代码中,在您引用的库中,或者在您引用的gem中 如果你是,禁用它(注释掉它,等等),看看你得到了什么 如果您正在运行生产,如果

在某些情况下,当代码中出现错误时(通常是部分变量命名错误,但也可能是其他变量),我从nginx获得504超时,而不是预期的堆栈跟踪(在开发环境中)

同样,规范似乎也会在相同的错误上暂停(而不是立即报告“失败”)

任何关于我应该调查什么或者我的设置可能有什么问题的想法都会很有帮助


我使用的是RubyonRails3.1。

您是否使用了任何类型的异常捕获或异常通知?它可以在您的代码中,在您引用的库中,或者在您引用的gem中

如果你是,禁用它(注释掉它,等等),看看你得到了什么

如果您正在运行
生产
,如果可以,请切换到
开发


许多人不赞成这种故障排除方法,但我有时做的另一件事是在代码中添加附加到状态文件的行(格式为
-
。通过查看每次请求后写入文件的内容,我可以找到问题所在

你可以这样做:

def debug(filename, message)
  File.open(filename, 'a') {|f| f.write("#{Time.now} - #{message}") }
end
调用
debug('/tmp/log.txt','testmessage')
将显示如下内容:

2011-12-29 23:31:51 -0500 - Test Message

您是否在使用任何类型的异常捕获或异常通知?它可能在您的代码中、在您引用的库中或在您引用的gem中

如果你是,禁用它(注释掉它,等等),看看你得到了什么

如果您正在运行
生产
,如果可以,请切换到
开发


许多人不赞成这种故障排除方法,但我有时做的另一件事是在代码中添加附加到状态文件的行(格式为
-
。通过查看每次请求后写入文件的内容,我可以找到问题所在

你可以这样做:

def debug(filename, message)
  File.open(filename, 'a') {|f| f.write("#{Time.now} - #{message}") }
end
调用
debug('/tmp/log.txt','testmessage')
将显示如下内容:

2011-12-29 23:31:51 -0500 - Test Message

当我收到响应时,我从Unicorn切换到了Thin,我不再注意到这个错误。我确实有异常通知代码,并尝试禁用它,但没有帮助:(不过,我很好奇,你为什么不直接使用Rails.logger而不是单独的状态日志?@Damir Zekic如果这是问题的一部分,我不会使用Rails logger。对于这种调试,最简单的解决方案是最简单的。这还允许你在加载Rails logger之前调试Rails启动,因为它没有depende在收到响应时,我从Unicorn切换到Thin,不再注意到此错误。我确实有异常通知代码,并尝试禁用它,但没有任何帮助:(不过,我很好奇,你为什么不直接使用Rails.logger而不是单独的状态日志?@Damir Zekic如果这是问题的一部分,我不会使用Rails logger。对于这种调试,最简单的解决方案是最简单的。这还允许你在加载Rails logger之前调试Rails启动,因为它没有depende在任何其他代码上。