Blog du logiciel de gestion de projet AtikTeam

Ruby, Rails, Passenger - usages et techniques

Ruby est un langage de programmation dynamique et orienté objet.

RubyOnRails est un cadriciel (les anglophones disent « framework ») pour construire des applications HTTP en ruby.

AtikTeam est une application construite avec RubyOnRails.

Passenger est un serveur d’applications Ruby, écrit par une boite des pays bas, phusion. Au passage, le travail des gens de cette boite est absolument spectaculaire.

Fin des présentations.

Cette semaine, nous avons fait de nombreux changements pour que l’application AtikTeam soit plus réactive. En particulier, nous avons réglé Passenger pour que la requête soit plus rapidement traitée :

PassengerUseGlobalQueue on
PassengerPoolIdleTime 10000

La file d’attente globale permet de mieux distribuer le traitement des requêtes en retardant au maximum la décision d’ordonnancement sur les processus. Cela permet, par exemple, de conserver la réactivité de l’application lorsque plusieurs personnes envoient des gros fichiers sur AtikTeam. Le IdleTime quant à lui permet de décider du temps de maintient en activité d’un processus, ce qui diminue l’attente de rendu des pages après un temps d’inactivité.

Nous avons également basculé sur Ruby Enterprise Edition, une branche de la MRI maintenue par Phusion (encore eux !) pour incorporer quelques patchs relatifs aux performances de l’interpréteur et du ramasse-miette.

Conclusion ? La manœuvre s’est déroulée en douceur, la transition n’a posé aucun problème, et les performances sont au rendez-vous, puisque la réactivité a progressé de 25% à 50% !

Merci Phusion, et merci notre infrastructure d’hébergement bien conçue :)