2011-01-27 4 views
5

Je suis à la recherche d'outils pour surveiller/tester les performances dans les rails, et je n'ai pas beaucoup de chance de trouver quelque chose d'particulièrement efficace. J'ai lu le guide des performances des rails, mais j'utilise RSpec au lieu de Rake: Test, donc je ne suis pas particulièrement désireux d'utiliser le rake: framework de test. Alors, qu'est-ce que les gens utilisent pour les tests de performance dans les rails en dehors de la rake: test benchmarker? Toute suggestion appréciéeRails gemmes/outils pour le benchmarking de performance?

Répondre

10

L'analyse comparative des performances est l'une de ces choses que vous aurez des opinions différentes selon qui vous demandez. Une chose que j'entends encore et encore est que vous ne devriez pas obséder sur la performance au début. Je ne sais pas où vous en êtes avec votre demande, mais cela pourrait être quelque chose à considérer. Après avoir développé une application assez importante, je peux honnêtement dire que je suis d'accord avec eux. Il est préférable d'utiliser les bonnes pratiques lors du développement et d'attendre pour effectuer l'optimisation des performances ultérieurement. Les meilleures pratiques incluent notamment l'indexation des colonnes de base de données.

Pour la surveillance des performances des applications live Rails, New Relic est l'un des meilleurs outils *. Le plan libre est un peu limité car il ne fournit que 30 minutes de données historiques, mais les informations qu'il recueille sont inestimables. Certains hébergeurs de cloud comme Heroku et Engine Yard proposent des mises à jour gratuites du plan en bronze, qui stockent une semaine de données. Une fois que vous avez des informations sur votre demande, vous pouvez prendre des décisions éclairées sur l'endroit où vous concentrer votre temps.

* Mon avis

+0

* acquiesce * des conseils solides, acclamations. – PlankTon

1

Lorsque votre application a besoin de quelques tests de performance, les tests d'évaluation de la performance à base de TestUnit par défaut sont un bon début. Cependant, vous ne devriez pas vous arrêter là, et devriez envisager d'utiliser une variété d'outils basés sur la nature de votre application. Par exemple, l'analyse des journaux de production à l'aide d'un outil tel que request-log-analyzer est un excellent moyen d'identifier les véritables goulots d'étranglement des performances. Bullet est un autre excellent outil que vous pouvez utiliser dans votre environnement de développement pour identifier les inefficacités de performance dans vos appels de base de données. Pour le benchmarking de bas niveau, les rails vous donnent également le benchmark helper methods dans les modèles, les contrôleurs et les vues. Cela peut être utile si vous vous concentrez sur l'accord d'une partie spécifique de votre application.

Il est également à noter que rspec n'est pas le meilleur outil pour les performances de l'analyse comparative (à ce jour). À mon avis, en essayant d'affirmer des choses comme it should_take_less_than 50 étire l'idée de tests de performance et d'essayer de le forcer dans le concept de BDD. Les performances portent moins souvent sur les attentes absolues et plus sur l'identification des parties les plus lentes de votre application et leur accélération.

Il existe de nombreuses ressources en ligne sur le sujet. J'ai trouvé ces Railscasts être un excellent point de départ: