2010-10-15 4 views
0

J'essayais d'évaluer différentes solutions de serveur Rails. Le premier sur ma liste était un système passager nginx +. Je tournais une instance EC2 avec 8 Go de RAM et 2 processeurs, installé nginx et le passager, et a ajouté à fichier nginx.conf:Optimisation des rails de trafic haute performance

passenger_max_pool_size 30; 
passenger_pool_idle_time 0; 
rails_framework_spawner_idle_time 0; 
rails_app_spawner_idle_time 0; 
rails_spawn_method smart; 

J'ai ajouté un petit contrôleur « génial » aux rails qui serait juste render :text => (2+2).to_s

Je filée une petite boîte et a couru ce pour le tester:

ab -n 5000 -c 5 'http://server/awesome' 

et la CPU alors que cela a été en cours d'exécution sur la boîte regardé à peu près comme ceci:

05:29:12 PM  CPU  %user  %nice %system %iowait %steal  %idle 
05:29:36 PM  all  62.39  0.00  10.79  0.04  21.28  5.50 

Et je remarque qu'il faut seulement 7-10 demandes simultanées pour amener le CPU à < 1% inactif, et bien sûr cela commence à faire sérieusement baisser les temps de réponse.

Donc, je me demande, est-ce que beaucoup de CPU charge juste le coût de faire des affaires avec Rails? Peut-il servir seulement une demi-douzaine de demandes super-bon marché simultanément, même avec une pile géante de RAM et quelques cœurs? Y a-t-il de bonnes suggestions pour me servir 15-30 demandes simultanées? Mise à jour: essayé la même chose sur l'un des "super méga lots et beaucoup de processeurs" chose EC2. Holy merde était que beaucoup de puissance du processeur. Le sweet spot semblait être d'environ 2 requêtes simultanées par CPU, a été capable de l'obtenir jusqu'à environ 630 demandes/seconde à 16 demandes simultanées. Je ne sais pas si c'est vraiment rentable sur beaucoup de petites boîtes, cependant.

+0

En outre, est-ce une question Rails pour Stack Overflow ou une question de performance pour super utilisateur? Je suis un peu confus sur ce point. –

+0

Peut-être que ServerFault? – Codebeef

+0

L'optimisation des performances pourrait être une zone grise entre stackoverflow et serverfault je pense – Amala

Répondre

1

Je dois dire que mon application Rails a reçu un énorme coup de pouce pour supporter environ 80 utilisateurs simultanés d'environ 20 initialement pris en charge après l'ajout de certains serveurs memcached (4 supports à EC2). Je dirige un site de sport très fréquenté qui a vraiment frappé il y a quelques mois. La taille de la base de données est d'environ 6 concerts avec de lourdes mises à jour/insertions.

Le cache MySQL (RDS à grande utilisation élevée) a également aidé un peu.

J'ai essayé de jouer avec les paramètres des passagers, mais j'ai obtenu des résultats curieux - comme par exemple chaque thread mange 250 Mo de RAM, ce qui est étrange compte tenu de l'application n'est pas énorme.

Vous pouvez également économiser $ en utilisant des instances ponctuelles, mais ne comptez pas entièrement sur cela - leur prix semble augmenter à l'occasion. Je AutoScale avec deux politiques - une avec des instances ponctuelles et une autre avec des instances sur demande (lire: réservé).

+0

Mon Je demande combien sont vos coûts mensuels RDS? –

+0

environ 160 $ ​​ou 250 $ ou quelque chose comme ça, le coût initial était d'environ 2000 $, si je me souviens. –

+0

Merci! Nous utilisons simplement MySQL avec un ec2 à haut débit et faisons nos propres sauvegardes quotidiennes, mais nous y réfléchissons. –

Questions connexes