J'ai un service Web fonctionnant sur 3 serveurs. Le paresseux est comme suit -Serveur 1 reçoit les demandes des utilisateurs le stocker sur la base de données locale et fait un peu de travail dessus. -Serveur 2 et 3 sont identiques et les chevaux de travail principaux, ils basés sur la demande récupère des informations à partir d'Internet et le renvoyer. -Serveur 1 appelle le serveur 2/3 via la requête http sur le réseau local (il y a un script php sur le serveur 2 & 3 donc le serveur 1 l'appelle http://localip/script.php) -Le serveur 1 appelle alternativement le serveur 2 ou 3 (ceci est fait pour distribuer load) Chaque requête sur le serveur 2/3 prend environ 8 secondes à traiter. Maintenant, quand j'ai installé un outil de surveillance sur tous les serveurs, il a trouvé que le serveur1 avait trop de charge (il montrait le nombre de processus> limite critique) N'est-ce pas la façon d'équilibrer la charge? Comment puis-je réduire la charge dans Server1?équilibrage de charge entre serveurs
Répondre
Le serveur 1 répond aux demandes entrantes de vos utilisateurs. Donc, si vous avez déterminé que c'est le goulot d'étranglement, alors vous devez concentrer votre attention là-bas.
Si les serveurs 2 et 3 effectuent uniquement des requêtes sur Internet, ils ne font probablement pas trop de travail sur le disque de travail.
Si vous avez 2 serveurs configurés pour effectuer une tâche raisonnablement simple et que votre serveur primaire est surchargé, il peut être préférable d'exécuter simplement les 3 serveurs en mode utilisateur. D'après ce que vous avez décrit, il semble que le serveur n ° 1 bloque la réponse des serveurs 2 & 3, ce qui signifie qu'il doit potentiellement ouvrir plusieurs connexions potentiellement. Si les serveurs 2 & 3 ne font pas vraiment beaucoup de travail car leur tâche est juste des requêtes internet, vous seriez probablement mieux servi en fusionnant les serveurs orientés utilisateur et le moteur de requête dans un serveur et en répartissant la charge utilisateur sur les 3 serveurs .
De cette manière, chaque serveur a moins de connexions utilisateur ouvertes. Et le moteur de recherche ne stocke toujours pas de ressources (si ce n'est que des requêtes Web), cela n'a donc pas d'impact négatif sur les performances de l'utilisateur.
Juste quelques pensées pour vous. Il n'est pas possible d'être totalement définitif sans en savoir plus sur votre application.
commentaires supplémentaires
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ù courez-vous vos serveurs? S'ils se trouvent dans un centre de données cloud tel que Amazon EC2, Rackspace, etc., les services d'équilibrage de charge sont facilement disponibles.
Vous pouvez également utiliser un équilibreur de charge logiciel. Apache offre cette fonctionnalité même:
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 inférieur du trafic, pour compenser les dépenses du serveur Apache. Dans ce cas, vous n'avez aucun changement de matériel. Bien que vous ayez un seul point d'échec évident, ce qui n'est pas sans rappeler ce que vous avez maintenant, un équilibreur de charge approprié atténue généralement le problème de point d'échec unique que vous avez actuellement avec votre architecture.
serveurs 2 et 3 récupère des informations à partir d'Internet et les renvoie au serveur 1, ce qui signifie serveur 2 et 3 bloquant le serveur 1, pas un autre moyen – ajreal
@ajreal c'est un service mobile réellement et quand un utilisateur envoie des sms à un certain nombre il frappe notre serveur ip de IE 1. Je ne peux pas placer chaque sms pour frapper l'IP différente. Donc, je dois scinder la charge de serveur1 –
@Ashwin - vous pouvez sûrement, il y a beaucoup de matériel d'équilibreur de charge disponible sur le marché, vous avez juste besoin de configurer une IP virtuelle pour servir d'IP publique, et quand votre matériel d'équilibreur de charge la demande, il peut suivre la demande au serveur 1 à N – ajreal