Question

J'ai un service Web en cours d'exécution sur 3 serveurs. Le woreking est la suivante -SErver demandes des utilisateurs 1 de stocker sur recieves db local et fait un travail sur elle. -Server 2 et 3 sont identiques et les principaux chevaux de travail, ils basés sur demande à partir d'Internet et récupère renvoient des informations sur lui. . -Server 1 serveur appelle 2/3 via http sur demande lan (il y a un script php sur le serveur 2 et 3 afin que les appels serveur 1 en tant que http: //localip/script.php ) -Server une demande alternatevely serveur 2 ou 3 (ce qui est fait pour répartir la charge) Chaque requête sur le serveur 2/3 prend environ 8 secondes à traiter. Maintenant, lorsque j'ai installé un outil de surveillance sur tous les serveurs, il a constaté que le server1 est avoir trop de charge (il a montré nombre de processus> limite critique) Est-ce pas le moyen d'équilibrer la charge? Comment puis-je réduire la charge Serveur1?

Était-ce utile?

La solution

Server 1 répond aux demandes entrantes de vos utilisateurs. Donc, si vous avez déterminé qu'il est le goulot d'étranglement, alors vous devez vous concentrer votre attention là-bas.

Si le serveur 2 et 3 ne sont Interroger à Internet, ils ne sont probablement pas faire trop de travail processeur / disque sage.

Si vous avez 2 serveurs configurés pour effectuer une tâche relativement facile, et votre serveur principal vers l'utilisateur est surchargée, il pourrait être préférable d'exécuter simplement les 3 serveurs comme faisant face à l'utilisateur.

D'après ce que vous avez décrit cela ressemble serveur # 1 bloque sur la réponse des serveurs 2 et 3, ce qui signifie qu'il doit tenir ouvert de nombreuses connexions potentiellement. Si les serveurs 2 et 3 ne sont pas vraiment pas que beaucoup de travail parce que leur tâche est seulement des requêtes Internet que vous seriez probablement mieux servis en fusionnant les serveurs faisant face à l'utilisateur et le moteur de requête dans un serveur et la distribution de la charge utilisateur sur tous les 3 serveurs .

De cette façon, chaque serveur a moins de connexions utilisateur ouvert. Et le moteur de recherche est toujours pas des ressources monopolisant (si elle est juste les requêtes Web), il est donc pas un impact négatif sur les performances des utilisateurs.

Juste quelques pensées pour vous. Il est impossible d'être totalement définitif sans en savoir plus au sujet de votre application.

Autres commentaires

Comme mentionné dans les commentaires que vous devriez regarder dans un équilibreur de charge adéquate, un bon équilibrage de la charge matérielle est la première recommandation. Où êtes-vous exécutez vos serveurs? Si elles sont dans un nuage centre de données comme Amazon EC2, Rackspace, etc, puis charger les services d'équilibrage sont facilement disponibles.

Vous pouvez également utiliser un équilibreur de charge logiciel. Apache fournit même cette fonctionnalité:

http://httpd.apache.org/docs/current/mod/ mod_proxy_balancer.html

Même avec la configuration actuelle, il serait possible de mettre Apache en face de l'un des serveurs, puis le régler de telle sorte que le serveur avec Apache (faisant l'équilibrage de charge) obtient un pourcentage plus faible du trafic, pour compenser les frais du serveur Apache. Dans ce cas, vous avez aucun changement de matériel. Bien que vous ayez un seul point évident de l'échec, pas très différent de ce que vous avez maintenant cependant, un équilibreur de charge appropriée atténue généralement le problème à un seul point de défaillance vous actuellement avec votre architecture.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top