web-dev-qa-db-fra.com

Comment diagnostiquez-vous une erreur 500 sur Heroku lorsqu'il n'y a pas de message d'erreur dans les journaux?

J'ai une application Rails sur Heroku qui génère 500 erreurs à intervalles aléatoires. Les pages Web afficheront "Erreur de serveur interne" en texte brut, au lieu de l'habituel "Nous sommes désolés. Il s'est passé quelque chose faux. "page. Lorsque je rafraîchis la page, cela fonctionne très bien.

Les journaux ne me montrent pas de message d'erreur, juste

» 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

Le support m'a dit de regarder la mise en file d'attente des demandes dans New Relic, mais New Relic n'affiche qu'une grande marque rouge indiquant que le serveur est en panne (même si le site fonctionne correctement lorsqu'il est actualisé).

Sans message d'erreur, je ne sais pas comment diagnostiquer ce problème.

28
lala

Dans Heroku, je diagnostique les erreurs avec LogEntries - c'est beaucoup plus facile que les journaux Heroku pour diagnostiquer les erreurs.

Ce que je fais, c'est charger l'application, et dans le panneau LogEntries, allez dans "Live (Beta)". Cela montre toutes les erreurs qui apparaissent et sont généralement très explicatives

Juste quelque chose qui pourrait aider

17
Richard Peck

Essayez d'ajouter le Rails_12factor gem pour obtenir un journal des erreurs plus robuste (uniquement si vous utilisez Heroku).

Assurez-vous rake db:migrate votre base de données sur Heroku avec heroku run rake db:migrate

35
LMo

La solution qui a fonctionné pour moi lors du déploiement de mes applications Django sur Heroku est d'aller dans le fichier production.py et de changer le code DEBUG = FALSE à DEBUG = TRUE. De cette façon, vous devriez pouvoir voir les erreurs que Django affiche. Attention qu'une fois que vous avez trouvé l'erreur et effectué les corrections, ce paramètre doit être reconverti en FALSE.

0
abautista