webentwicklung-frage-antwort-db.com.de

Wie viele Anfragen pro Minute gelten als "Schwerlast"? (Annäherung)

Oft reden die Leute in ihren (optimierungs- und leistungsbezogenen) Fragen und Antworten über 'schwere Last'.

Ich versuche, dies im Kontext einer regulären Webanwendung auf einem typischen Server (siehe SO & seine relativ kleine Infrastruktur als Beispiel) in einer Reihe von Anfragen pro Minute zu quantifizieren, unter der Annahme, dass sie sofort zurückkehren ( Datenbankgeschwindigkeiten usw. zu vereinfachen und aus der Gleichung herauszunehmen).

Ich suche eine nominelle Anzahl/einen nominalen Bereich, nicht "wo die CPU maximal ist" oder ähnliches. Eine grobe Annäherung wäre großartig (z. B.> 5000/min). Vielen Dank!

27
Alex

Ich würde denken, dass die richtige Antwort auf diese Frage ist, da Sie das Maß für die Hardwarebelastung (CPU, Arbeitsspeicher, IO Auslastung) nicht möchten, dass die Menge der Anforderungen pro Zeiteinheit bei oder hoch ist über die erforderliche maximale Anzahl von Anforderungen pro Zeiteinheit.

Die erforderliche maximale Anzahl von Anforderungen ist mit dem Kunden oder mit dem Verantwortlichen für die Gesamtarchitektur festgelegt.

Angenommen, X ist die für die Anwendung erforderliche maximale Last. Ich denke, so etwas würde die Antwort annähern:

 0 <Leichte Last <X/2 <Regelmäßige Last <2X/3 <Hohe Last <X <= Schwere Last 

Die Sache mit einer einzigen Zahl aus dem Nichts ist, dass es keinerlei Beziehung zu Ihrer Anwendung hat. Und was schwere Last ist, ist absolut unzweifelhaft an das gebunden, was die Anwendung tun soll.

Obwohl 200 Anfragen pro Sekunde eine Last sind, die kleine Webserver beschäftigt (~ 12000 pro Minute).

39
Vinko Vrsalovic

Schwere Last ist das, was Ihr System nicht bewältigen kann. ;-)

6
David Plumpton

Mehrere hundert Anfragen pro Sekunde.

Bei den meisten Servern beträgt die Anzahl der offenen Verbindungen von Anfang an 256 oder weniger, also 256 Anforderungen pro Sekunde. Sie können es für Ping-Anfragen auf 2000-5000 oder für Lightweight-Anfragen auf 500-1000 verschieben. Es noch höher zu machen ist sehr schwierig und erfordert Änderungen in Netzwerk, Hardware, Betriebssystem, Serveranwendung und Benutzeranwendung (siehe Problem 10k ).

Die Suchgeschwindigkeit + Latenz für Festplatten liegt bei 1 bis 10 ms, für SSDs bei 0.1-1 ms. Es ist also 100-100 000 IOPS. Nehmen wir 100 000 als Top-Wert ( SSD Konsequential Write )

Normalerweise bleibt die Verbindung für mindestens 1 x latency value ms offen. Die Wartezeit von Client zu Server liegt selten unter 50-100 ms, sodass nur 100 000/50 = 2000 IOPS neue Verbindungen herstellen kann.

2000 ping request per second von verschiedenen Clients ist also eine Basisobergrenze für einen normalen Server. Es kann verbessert werden, indem die RAM -Disk verwendet wird oder weitere SSDs hinzugefügt werden, um die IOPS-Anzahl zu erhöhen, Anforderungen weitergeleitet werden, um Ping zu reduzieren, das Betriebssystem geändert/modifiziert wird, um den Kernel-Overhead zu verringern usw. Normalerweise ist es auch höher, da viele Anforderungen von kommen Derselbe Client (Verbindung) und eine begrenzte Anzahl von Clients. Bei guten Bedingungen kann es bis zu Hunderttausende

Andererseits können höhere Werte für Ping, Anwendungsausführungszeit, Betriebssystem- und Hardware-Fehler den Basiswert leicht auf mehrere Hundert Anforderungen pro Sekunde reduzieren. Außerdem eignen sich typische Webserver und -anwendungen normalerweise nicht sehr gut für eine Optimierung auf hoher Ebene. Daher ist der Vorschlag von Vinko Vrsalovic für 200 ziemlich realistisch.

5
d.sergeiev

Dies ist keine einfache Frage, die mit einer einfachen Anfrage/Minutennummer beantwortet werden kann.

Im Telekommunikationssektor führen wir häufig Leistungstests durch und simulieren viele Anrufe pro Sekunde, um das Limit herauszufinden. Wir erhöhen die Anrufrate so lange, bis der Server nicht mehr mithält.

Es hängt also von Ihrem Server ab und davon, was er verarbeiten kann. Es hängt auch von Ihrer Perspektive ab. Zum Beispiel kann ein alter 386 nur knapp 50 Anfragen/Minute bearbeiten. Ich würde das eine leichte Ladung nennen. Ein hochspezialisierter Server kann jedoch 60000 Anfragen/Minute verarbeiten. Dies ist nur eine Vermutung. Ich habe keine Ahnung, ob Apache dies tun könnte. Unsere Telekommunikationssoftware kann das mit Sicherheit.

Ich denke, es ist am besten, dies aus der Serverperspektive zu beantworten. Ich würde sagen, dass eine sehr hohe Auslastung vorliegt, wenn Sie innerhalb von 10% dessen sind, was Ihr Server über mehrere Minuten oder Dutzende von Minuten hinweg aushält. Schwere Last innerhalb von 15%.

4
Matt

Es ist schwer zu beantworten, da das Laden nicht nur eine Frage der Anfragen pro Zeiteinheit ist. Dies hängt davon ab, was diese Anforderungen tun und wie sie implementiert werden.

Zum Beispiel können mehr Lesevorgänge als Schreibvorgänge eine geringere Belastung bedeuten.

Die asynchrone Verarbeitung von Schreibvorgängen kann eine geringere Belastung bedeuten, als auf den Abschluss der synchronen Verarbeitung warten zu müssen.

Ein Extrem wären Aktienhandelssysteme, die an jedem Handelstag Milliarden von Transaktionen abwickeln. Sehen Sie sich das typische Volumen an der NYSE oder NASDAQ an und schätzen Sie daraus einen hohen Wert pro Minute.

Angenommen, 2B-Transaktionen an einem Handelstag stehen stellvertretend für NASDAQ. Die Märkte öffnen um 9:00 Uhr und schließen um 16:00 Uhr. Das sind also 7 Stunden * 3600 Sekunden/Stunde = 25200 Sekunden. Dies würde durchschnittlich 2B Transaktionen/25200 Sekunden = 79.365 Transaktionen pro Sekunde ergeben - in der Tat eine sehr hohe Last. Offensichtlich werden viele Server verwendet, sodass Sie diese Nummer benötigen, um die Auslastung pro Server zu ermitteln.

Wenn SO als guter Benchmark angesehen werden kann, fragen Sie möglicherweise nach dem Metavolumen.

2
duffymo

Schwere Last ist alles, was größer ist als in den Anforderungen angegeben. Sie müssen wissen, wie Ihre Anwendung verwendet wird, um festzustellen, was als hohe Auslastung eingestuft werden kann. Andernfalls könnten Sie einen Ferrari bauen, der nur für die Lebensmittel verwendet wird. Tolle Erfahrung, aber Verschwendung von Ressourcen.

0
Rafiek