2010-10-24 24 views
3

Nous exécutons des travailleurs Ruby sur un grand nombre de machines à l'aide de Resque. De temps en temps, nous voyons des failles de segmentation dans nos processus de travail Resque. Il est difficile de les déboguer, car ils sont assez rares, et nous devons exécuter des dizaines de milliers de tâches réparties pour provoquer un crash.Capture des backtraces de défaillances de segmentation à partir de Ruby et Resque sous Linux

Idéalement, nous aimerions capturer les backtraces et les fichiers core après chaque crash, et les télécharger automatiquement sur un serveur central. En d'autres termes, nous cherchons quelque chose comme "Bug Buddy" de Gnome, mais complètement automatisé et capable d'attraper les fautes lorsque l'interpréteur Ruby vide le noyau. (Des produits similaires basés sur l'interface graphique incluent MacOS X Crash Reporter, Windows Error Reporting, KDE Dr. Konqi et Mozilla's Breakpad.) Nous avons besoin de quelque chose qui fonctionne sur un serveur sans tête et sans surveillance.)

Jusqu'à présent, l'option la plus prometteuse semble être l'Apport d'Ubuntu, qui peut intercepter les plantages dans les processus du serveur et les enregistrer sur le disque. Apport télécharge normalement des plantages sur le Launchpad d'Ubuntu, mais il est également livré avec une bibliothèque Python.

Est-ce que quelqu'un a des recommandations ou une expérience de première main en utilisant ces bibliothèques? Je demande ici plutôt que sur Server Fault parce que les solutions sont susceptibles d'impliquer des changements de programmation ou de code.

+0

Avez-vous la possibilité d'essayer autre chose que Resque, comme RabbitMQ? –

+0

Bonjour. Avez-vous trouvé un outil pour le résoudre et capturer les erreurs de segmentation? –

Répondre

-1

Extrayez Hoptoad, getExceptional et New Relic. Toutes sont des options SaaS qui le feront pour vous (New Relic suivra également les performances). Si vous voulez rouler le vôtre, essayez la gemme exception_notification.

+0

Nous avons déjà des outils pour attraper les exceptions au niveau Ruby. Nous avons besoin d'outils pour détecter les erreurs de segmentation et les erreurs de bus dans le processus Ruby lui-même. Est-ce que l'un des outils que vous avez suggéré fait cela? Google pour "Erreur de segmentation Hoptoad" ne donne aucune instruction. – emk

+0

Non, malheureusement, cela nécessite que l'interpréteur Ruby fonctionne toujours. Désolé, j'ai raté la partie "faute de segmentation". À ce stade, ce n'est vraiment plus une question Ruby. La faute du serveur peut être votre meilleur pari. –