Почему nginx + unicorn вернет 504 Timeout в исключительной ситуации (вместо трассировки стека)? - PullRequest
1 голос
/ 05 декабря 2011

В определенных сценариях, когда в коде есть ошибка (обычно переменная с неправильным именем в частичном, но это может быть и что-то еще), я получаю 504 Timeout от nginx вместо ожидаемой трассировки стека среде разработки ).

Также кажется, что спецификации останавливаются на тех же ошибках (вместо того, чтобы сразу сообщать о "сбое").

Любые идеи о том, что мне следует изучить или что может быть не так с моей настройкой, были бы полезны.

Я использую Ruby on Rails 3.1.

1 Ответ

1 голос
/ 30 декабря 2011

Используете ли вы какие-либо исключения или уведомления об исключениях? Это может быть в вашем коде, в библиотеке, на которую вы ссылаетесь, или в геме, на который вы ссылаетесь.

Если да, отключите его (закомментируйте и т. Д.) И посмотрите, что вы получите.

Если вы работаете в production, переключитесь на development, если можете.


Многие люди недовольны этим методом устранения неполадок, но одна из других вещей, которые я иногда делаю, - перетекать мой код строками, которые добавляются в файл состояния (в формате <DATE> <TIME> - <MESSAGE>. Видя, что записывается в файл после каждого запрос, я могу найти, где проблема.

Вы могли бы сделать что-то такое:

def debug(filename, message)
  File.open(filename, 'a') {|f| f.write("#{Time.now} - #{message}") }
end

Вызов debug('/tmp/log.txt','Test Message') покажет что-то вроде этого:

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