Как вы диагностируете ошибку 500 на Heroku, когда в журналах нет сообщения об ошибке?
У меня есть приложение Rails на Heroku, которое обслуживает 500 ошибок в случайные интервалы. На веб-страницах будет отображаться "Внутренняя ошибка сервера" в обычном тексте, вместо обычного "Мы сожалеем. Что-то пошло не так". стр. Когда я обновляю страницу, она работает нормально.
Журналы не показывают мне сообщение об ошибке, просто
» 14:20:34.107 2013-10-11 12:20:33.763690+00:00 heroku router - - at=info method=HEAD path=/ host=www.mydomain.com fwd="184.73.237.85/ec2-184-73-237-85.compute-1.amazonaws.com" dyno=web.1 connect=1ms service=63ms status=200 bytes=0
» 14:21:03.957 2013-10-11 12:21:03.561867+00:00 heroku router - - at=info method=GET path=/ host=www.mydomain.com fwd="50.112.95.211/ec2-50-112-95-211.us-west-2.compute.amazonaws.com" dyno=web.1 connect=0ms service=1ms status=500 bytes=21
Поддержка показала мне, чтобы посмотреть очередность запросов в New Relic, но New Relic показывает только большую красную метку, говорящую о том, что сервер не работает (даже если сайт отлично работает при обновлении).
Без сообщений об ошибках я затрудняюсь для диагностики этой проблемы.
Ответы
Ответ 1
В Heroku я диагностирую ошибки LogEntries - это намного проще, чем журналы Heroku для диагностики ошибок.
Я загружаю приложение, а на панели LogEntries перейдите в раздел "Live (Beta)". Это показывает любые ошибки, которые появляются и, как правило, очень толковые
Просто что-то, что может помочь
Ответ 2
Попробуйте добавить гем rails_12factor
чтобы получить более надежный журнал ошибок (только если вы используете Heroku).
Убедитесь, что вы heroku run rake db:migrate
rake db:migrate
свою базу данных на Heroku с помощью heroku run rake db:migrate
Ответ 3
Решение, которое сработало для меня при развертывании моих приложений Django в Heroku, - это зайти в файл production.py и изменить код DEBUG = FALSE
на DEBUG = TRUE
. Таким образом, вы сможете увидеть ошибки, которые отображает Django. Имейте в виду, что, как только вы нашли ошибку и внесли исправления, этот параметр должен быть изменен на FALSE
.