2016-06-04 15 views
0

Ich habe eine Website, die häufig mit mehreren Anfragen von Tausenden von Kunden überlastet ist. Ich kann meine Server nicht unendlich skalieren und die Anwendung im aktuellen Zustand ist nicht in der Lage, den Verkehr zu bewältigen. Für einen besseren Komfort möchte ich zuerst die Clients, die die Transaktion gestartet haben, dazu bringen, sie abzuschließen, und danach anderen Kunden erlauben, die Transaktion zu starten. Ich bin auf der Suche nach einer Lösung, wie HTTP-Anfragen in zwei Gruppen aufgeteilt werden: die ersten Anfragen, die die Transaktion beenden können und die anderen, die die 503 Server-Webseite erhalten sollen.Zeige Server beschäftigt nur für Anfragen ohne Cookie

Ich kann eine bestimmte Anzahl von Transaktionen gleichzeitig verarbeiten. Die restlichen Transaktionen möchte ich für eine Weile mit Server-belegter Webseite halten. Ich dachte, dass ich dafür Lack benutzen kann. Knospe Ich kann mir in VCL dafür nicht die richtige Kondition ausdenken.

Ich möchte in Lack die Anzahl der aktuellen Verbindungen zum Backend finden. Wenn die aktuelle Anzahl von Verbindungen höher als ein Wert ist (z. B. 100) und die Anfrage kein Sitzungscookie hatte, wird die Antwort 503 Server beschäftigt sein. Wenn die Anzahl der Verbindungen sogar größer als 100 ist, aber der Sitzungscookie vorhanden ist, werden die Anforderungen an das Back-End weitergeleitet.

AFAIK in Lack VCL Ich kann nur die Gesundheit des Backend (Direktor), die wahr/falsch sein sollte. Wenn das Back-End jedoch als nicht fehlerfrei betrachtet wird, werden die Anforderungen nicht an es übergeben. Wenn ich max_connections zum Backend verwende, haben alle Verbindungen bis zum Limit 503 Fehler.

Gibt es eine Möglichkeit, dieses Verhalten mit Lack, Negx, Apache oder einem anderen Werkzeug zu erreichen?

Antwort

0

Muss Ihr Inhalt dynamisch sein, egal was? Ich führe eine Site aus, die 3 bis 4 Millionen Unique pro Tag verarbeitet und Funktionen wie den Grace-Modus verwendet, um Ungültigkeitsfälle zu behandeln.

Eine andere Option ist ESI, Edge Side Includes, die die Last reduzieren kann, indem alles, was nicht dynamisch ist, zwischengespeichert wird.

+0

Es ist Tickets verkaufen Website - viele gleichzeitige Anfragen in kurzer Zeit. Die Anwendungslogik wird hauptsächlich in den SQL-Prozeduren geschrieben. Ja, es gibt einige Teile, die zwischengespeichert werden sollten, aber wenn der Benutzer seinen Platz auswählt, sollte die Transaktion so reibungslos wie möglich sein. Die Infrastruktur und die Anwendung können problemlos nur einige hundert (vielleicht 1000) gleichzeitige Anfragen bedienen, daher suche ich nach einer Lösung, wie man einige Clients für eine kurze Zeit mit 503 Server beschäftigt hält. – adrive