2010-12-01 41 views
0

J'ai une application rails et une application Sinatra. L'application Sinatra est écrite pour faire la recherche de fuseau horaire basé sur ZIP ou IP. Application Sinatra utilise geoip_city gem pour la recherche en utilisant IP et a sa propre base de données pour la recherche ZIP. L'application rails parle à l'application Sinatra pour la recherche de fuseau horaire.Performance étrange d'une application rails + sinatra

Nous avons travaillé sur les performances de l'application de rails et nous l'avons amélioré dans une bonne mesure. Nous l'avons testé en utilisant Jmeter, avec 1000 threads fonctionnant pour toujours avec 60 ramp-up. Cela a bien fonctionné. Nous avons également testé l'application Sinatra avec des numéros similaires et elle fonctionne assez bien. Cependant, lorsque nous testons la pièce où l'application rails parle à l'application Sinatra pour la recherche de fuseau horaire, après la période d'accélération, nous obtenons des erreurs de délai. La requête de recherche de fuseau horaire effectuée par l'application rails à l'application Sinatra expire. Si je réduis le nombre de threads dans Jmeter à 100, l'application fonctionne bien.

Je me demande pourquoi cela se produit si l'application rails et l'application Sinatra fonctionnent correctement individuellement. Qu'est-ce qui réduit les performances lorsque les rails et l'application Sinatra sont enchaînés ensemble. Est-ce comme c'est censé être?

+1

Courent-ils sur le même serveur? Dans ce cas, ils seraient en compétition pour les ressources. – troelskn

+0

@troelskn C'était en effet le problème! J'ai déplacé l'application Sinatra vers un serveur différent avec des ressources dédiées et la performance est de retour à un niveau impressionnant! Merci :-) – Chirantan

Répondre

0

Comme @troelskn l'a souligné à juste titre dans le commentaire, les deux applications étaient en concurrence pour les ressources. Déplacer l'un d'entre eux vers un serveur différent avec des ressources dédiées semble avoir résolu le problème.