vendredi 8 août 2008

Optimisation d'une application Rails

Un article sur Ruby on rails dans le linux journal aout 2008 explique comment optimiser les performances dans applications Rails. Tout d'abord, WEBrick le serveur web de développement livré avec Rails ne doit pas etre considéré comme un serveur web de production. Une mise en production devra se faire avec le serveur Mongrel.

Cet article détaille comment migrer les log Rails vers syslog.
Il faut installer la gemme SyslogLogger par la commande : gem install --remote SyslogLogger .
Puis il faut ajouter les lignes suivantes dans le fichier de configuration environment.rb :

require 'syslog_logger'
RAILS_DEFAULT_LOGGER = SyslogLogger.new

Et la ligne
*.info /var/log/production.log
dans le fichier /etc/syslog.conf

Le programme pl_analyse /var/log/production.log va afficher le temps consommé pour chaque requete , le temps de traitement des requetes SQL et enfin le temps utilisé pour la restitution des résultats.

Un autre utilitaire permet de profiler les applications Rails , l'installation se fait par :
gem install --remote ruby-prof

Il est nécessaire d'écrire un petit script de bench dans le répertoire crée à cet effet : test/performance
Le script peut être très simple comme : get ('/')

Puis le script sera lancé par :
script/performance/request -n 18 test/performance/test.rb

Le résultat sera écrit dans le fichier profile-output.txt

Le véritable travail d'optimisation commence avec l'analyse de tous ces résultats. Il faut trouver quelle procédure est la plus gourmande en temps de traitement , pour la réécrire, la réorganiser ou pour ajouter des fonctions de cache.

Aucun commentaire: