Frage

Ich habe einen Web-Service auf 3 Servern ausgeführt werden. Der woreking ist wie folgt: -Server 1 BEKOMMT Benutzeranfragen speichern Sie es auf lokalen db und tut auf es einige Arbeit. -Server 2 und 3 identisch sind und die wichtigsten Arbeitspferde, sie beruhen auf Anfrage holt Informationen aus dem Internet und gibt es zurück. . -Server 1 Anrufe Server 2/3 via HTTP-Anforderung über lan (es ist ein PHP-Skript auf dem Server 2 und 3 so Server 1 ruft es: http: //localip/script.php ) -Server 1 alternatevely Server ruft 2 oder 3 (dies erfolgt Last zu verteilen) Jede Abfrage auf dem Server 2/3 dauert ca. 8 Sekunden zu verarbeiten. Wenn ich jetzt ein Monitoring-Tool auf allen Servern installiert gefunden, dass die server1 zu viel Last mit (es zeigte Anzahl von Prozess> kritische Grenze) Ist dies nicht der richtige Weg Belastung ausgleichen? Wie kann ich die Last in Server1 reduzieren?

War es hilfreich?

Lösung

Server 1 auf eingehende Anfragen von Ihren Benutzern zu reagieren. Also, wenn Sie festgestellt haben, dass es der Engpass ist, dann müssen Sie Ihre Aufmerksamkeit fokussieren es.

Wenn der Server 2 und 3 werden nur Anfragen an das Internet durchgeführt wird, dann werden sie wahrscheinlich nicht zu viel Arbeit Prozessor / disk tun weise.

Wenn Sie 2-Server konfiguriert ist, eine ziemlich einfache Aufgabe zu tun, und Ihr primären Benutzer gerichteten Server überlastet wird es besser, einfach sein könnte all 3-Server als Benutzer gerichteten laufen.

Von dem, was Sie beschrieben es klingt wie Server # 1 blockiert auf der Reaktion von Servern 2 und 3, was bedeutet, es potenziell offen viele Verbindungen zu halten hat. Wenn Server 2 & 3 nicht wirklich nicht so viel Arbeit, weil ihre Aufgabe ist es nur Internet-Abfragen, die Sie wäre wahrscheinlich besser durch die Zusammenlegung der Benutzer verbundenen Servern und die Abfrage-Engine in einem Server und der Verteilung von Benutzerlast auf allen 3 Servern bedient werden .

Auf diese Weise hat jeder Server weniger offene Benutzerverbindungen. Und die Abfrage-Engine wird nicht noch Ressourcen hogging (wenn es nur Web-Anfragen ist), so ist es nicht negativ Benutzer die Performance zu beeinträchtigen.

Nur ein paar Gedanken für Sie. Es ist nicht möglich, völlig endgültig zu sein, ohne mehr über Ihre Anwendung zu kennen.

Zusätzliche Kommentare

Wie in den Kommentaren erwähnten Sie in eine richtige Load Balancer aussehen sollte, ein guter Hardware-Load-Balancer ist die erste Empfehlung. Wo sind Sie mit Ihren Servern? Wenn sie in einer Cloud-Datenzentrum wie Amazon EC2, Rackspace sind, etc dann laden Dienste Ausgleich Sie leicht verfügbar sind.

Sie können auch eine Software zum Lastenausgleich verwenden. Apache bietet diese Funktionalität auch:

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

Auch bei der aktuellen Konfiguration wäre es möglich, Apache zu setzen vor einem des Server und dann stimmen Sie es so, dass der Server mit Apache (dem Load-Balancing zu tun) bekommt einen geringeren Prozentsatz des Verkehrs, um die Kosten zu kompensieren des Apache-Servers. In diesem Fall haben Sie keine Hardware-Änderungen. Auch wenn Sie eine offensichtliche Single Point of Failure, nicht unähnlich der, was Sie aber jetzt haben, ein angemessener Lastenausgleich mildert im Allgemeinen des Single-Point-of-Failure Problem zur Zeit Sie mit Ihrer Architektur hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top