2 votes

Comment distribuer une application entre 2 serveurs

HI

J'ai une application Rails de marketing par courriel qui fonctionne sur un serveur CentOS QuadCore de 16 Go de RAM. Mais actuellement, notre serveur web prend trop de temps pour répondre aux demandes aux heures de pointe (Mongrel Cluster + Apache). Nous le surveillons en utilisant ScoutApp ( www.scoutapp.com ).

Alertes scoutes Temps maximum (3 sec) dépassé sur 668 requêtes Temps maximum (3 sec) dépassé sur 120 requêtes

J'ai contracté un autre serveur Dual Xeon 4GB RAM .

Quelle est la meilleure configuration pour distribuer cette application entre deux serveurs ? Je pense utiliser le SERVEUR-1 (16GB RAM) avec Mysql et Exim et migrer l'application vers le SERVEUR-2 (4GB RAM) et l'utiliser comme SERVEUR WEB (cluster Mongrel + Apache) uniquement.

Quelqu'un peut-il me suggérer une meilleure installation, des conseils ou des idées ?

3voto

TheCompWiz Points 7329

... vous devriez restreindre le champ du sujet à "Rails" en particulier. (le sujet est un peu trompeur) Je vous suggère fortement de regarder les logs et d'essayer d'identifier d'où vient le décalage.

Il y a plusieurs raisons pour lesquelles une application Rails peut être lente... et la plupart du temps, cela n'a rien à voir avec la base de données ou le serveur web lui-même. Je m'assurerais que la mise en cache n'est PAS désactivée. (en mode développement, la mise en cache est désactivée par défaut). Rails bénéficie de nombreux gains de performance grâce aux nombreux algorithmes de mise en cache dont il dispose... De plus, plusieurs des bits de débogage qui sont activés en mode développement consomment aussi un peu de performance.

Si tout ce qui peut être fait est fait... il y a plusieurs étapes pour passer à un "environnement Rails en cluster". Le débogage que j'ai suggéré plus tôt peut également vous indiquer ce dont vous avez besoin pour passer à l'échelle supérieure. Si vous attendez constamment que la base de données réponde... alors déplacer le serveur de base de données hors de cette boîte et sur sa propre boîte... ou mettre en cluster la base de données seule pourrait être tout ce dont vous avez besoin. Si vous trouvez que le serveur www est celui qui est à la traîne... augmentez la capacité du serveur web.

1voto

Boris Terzic Points 6148

La séparation de l'hébergement web/http et de l'hébergement de la base de données sur des serveurs distincts est une bonne première étape. La deuxième étape consiste à obtenir un serveur web en double et à le configurer avec le premier avec un type d'équilibreur de charge. Soit du matériel qui se trouve devant les deux serveurs, soit un logiciel.

edit : Cela suppose que vous êtes sûr que la base de données n'est pas votre facteur limitant (ce qui pourrait très bien être le cas). Déplacer le serveur web hors du serveur de base de données aidera cette situation, mais le second serveur web que je suggère n'aidera que si le traitement de chaque requête vous ralentit et non la base de données.

-1voto

Newtonx Points 295

Ce n'est pas la base de données qui pose problème. Lorsque les réponses ont commencé à être lentes, j'ai vérifié les processus mysql et il n'y avait aucun processus en attente. Je pense qu'il y a trop de demandes qui atteignent le serveur web (apache + cluster mongrel). Même les sites web fonctionnant en PHP ne sont pas accessibles aux heures de pointe. Je n'ai que ScoutApp pour surveiller mon serveur.

IO

Attente E/S 11,9 ms Lecture kBps 422,8 kB/s Lectures/sec 61 Taux d'utilisation 82 Ecriture kBps 2,435.9 kB/s Ecritures/sec 196

Rails Aplication monitoring

Temps moyen db 0.00 sec
Durée moyenne des requêtes 10.10 sec
Durée moyenne de visualisation 9,81 secondes
Demandes 13.93 req/min
Demandes lentes 7.47 req/min
Pourcentage de demandes lentes 54%

Chargement d'Apache

Requêtes par seconde 1,80 req/s
Nombre total d'accès : 19169 - Trafic total : 461.9 MB
Utilisation du CPU : u4 s.11 cu1.31 cs0 - .0648% de charge CPU
2,29 demandes/seconde - 56,5 kB/seconde - 24,7 kB/requête
12 demandes en cours de traitement, 9 travailleurs inactifs

File d'attente Exim ( exim -bpc )

10475

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X