Webserver-Eigenschaften | BITTE UM ANTWORT

BorisBen

Grünschnabel
Hallo an alle!

Ich hoffe ihr könnt mir bzgl. der nachfolgenden Anfrage weiterhelfen - bin um jede Antwort dankbar.

Nehmen wir an ich bräuchte einen Server, der im Stande sein muss 30 Millionen Accounts auf Datenbankbasis (z.B. MySQL) zu "verwalten". Die Hauptaufgabe dieses Rechners würde darin bestehen, ankommenden Requests in der Art und Weise zu verarbeiten, dass die übermittelten Daten (Account, Passwort) geprüft werden und anschließend ein RICHTIG oder ein FALSCH an den nachfragenden Rechner zurückgesendet wird.

Wie müsste dieser Rechner / Webserver hardware-technisch ausgestattet sein?

Bin euch für jede konstruktive Antwort dankbar!

Greetz BorisBen

[ Bitte fragt nicht nach dem Sinn! Es handelt sich hierbei um eine Projektarbeit, die zunächst nur theoretisch die Fakten untersucht. ]
 
Hallo!

Eine wirklich gute und genaue Antwort kann ich dir leider nicht geben, aber über folgendes solltest du dir Gedanken machen: Wie viele Anfragen kommen in welcher Zeit? Wenn du eine Anfrage pro Stunde hast, brauchst du logischerweise deutlich weniger Ressourcen als bei mehreren Anfragen pro Sekunde!

Mamphil
 
Eben das ist das Problem... es ist vorerst nicht vorauszusehen wieviele Anfragen pro Sekunde oder Minute kommen werden. Das ist eben die Theorie.
 
Nehmen wir fuer ein Beispiel mal an, dass 30% der 30.000.000 Accounts taeglich einmal aufgerufen werden. Ich denk das ist eine relativ realistische Zahl, obwohl es, je nach Anwendungsgebiet auch weitaus mehr sein kann. Aber nehmen wir einfach mal 30%, das waeren dann 900.000 Aufrufe pro Tag. Das macht im Durchschnitt ca. 105 Aufrufe pro Sekunde.
Jetzt hab ich grad mal ein kleines Script geschrieben was ungefaehr das macht was Du beschrieben hast, es holt einen User anhand des Usernamens aus der Datenbank und vergleicht das Passwort. Bei Uebereinstimmung wir "yes" ausgegeben, andernfalls "no".
Nun hab ich meinen Server mit Webbench getestet. Als Anzahl der Clients hab ich, wie oben berechnet, 105 angegeben. Es wird 30 Sekunden lang simuliert wie 105 Clients das oben beschriebene Script aufrufen.

Nun erstmal zur Hardware:
CPU: P4 1.6 GHz
RAM: 1 GB DDR400
Festplatte: 200 GB SATA

Nun die Software:
OS: Slackware Linux 10.1 mit Kernel 2.6.15.6
MySQL: 5.0.18
Apache: 2.2.0 und 1.3.34 (hab den 1.3er noch als Testumgebung laufen, hab beide getestet)

Und nun zu den Ergebnissen:
Apache 2.2.0
Webbench hat gesagt.:
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://localhost/webbench.php
105 clients, running 30 sec.

Speed=35372 pages/min, 533588 bytes/sec.
Requests: 17686 susceed, 0 failed.
Apache 1.3.34
Webbench hat gesagt.:
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://localhost:8080/webbench.php
105 clients, running 30 sec.

Speed=29744 pages/min, 386827 bytes/sec.
Requests: 14872 susceed, 0 failed.
Wir haben also folgende Werte:
Apache 2.2.0: Speed=35372 pages/min, 533588 bytes/sec.
Apache 1.3.34: Speed=29744 pages/min, 386827 bytes/sec.

Da sich die 105 Clients diese Werte wohl teilen muessen, nehme ich mal stark an, wollen wir erstmal gucken wie viele Aufrufe denn da so fuer einen Client uebrig bleiben.
Apache 2.2.0: 336 pages/min
Apache 1.3.34: 283 pages/min

Und das nun fuer eine Sekunde:
Apache 2.2.0: 5.6 pages/sec
Apache 1.3.34: 4.7 pages/sec

Wir sehen, dass jeder dieser 105 Clients die Seite ca. 5 mal pro Sekunde abholen kann. Theoretisch koennte man nun also sagen, dass auch 500 Clients gleichzeitig bedient werden koennen.
Ein kurzer Test mit Webbench und anschliessender Berechnung der Seiten/Client/Sekunde bestaetigt dies auch.
Webbench hat gesagt.:
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://localhost/webbench.php
500 clients, running 30 sec.

Speed=35708 pages/min, 538656 bytes/sec.
Requests: 17854 susceed, 0 failed.
35708 / 500 = 71
71 / 60 = 1.2
Wir kommen dabei also auf 1.2 pages/sec.

Jetzt rechnen wir mal diese 500 Clients/sec auf den Tag um.
500 * 86400 = 43.200.000
Es koennten also in der oben gezeigten Konfiguration am Tag theoretisch mehr als die 30.000.000 Accounts bedient werden.

Selbst wenn wir auf 400 Clients/sec zurueckgehen kommen wir immer noch auf 34.560.000 Clients pro Tag.

Das alles reicht natuerlich nur wenn jeder Client nur einmal anfragt.

So, dies ist das Ende meiner kleinen Mathe-Stunde. Hausaufgaben gibt es diesmal keine.

Nachtrag: Nein, ich hab leider nicht die Moeglichkeit mal einen 24-Stunden-Test mit 30.000.000 Clients zu machen. ;)
 
BorisBen hat gesagt.:
Nehmen wir an ich bräuchte einen Server, der im Stande sein muss 30 Millionen Accounts auf Datenbankbasis (z.B. MySQL) zu "verwalten". Die Hauptaufgabe dieses Rechners würde darin bestehen, ankommenden Requests in der Art und Weise zu verarbeiten, dass die übermittelten Daten (Account, Passwort) geprüft werden und anschließend ein RICHTIG oder ein FALSCH an den nachfragenden Rechner zurückgesendet wird.

Wie müsste dieser Rechner / Webserver hardware-technisch ausgestattet sein?
Wenn sehr viele Clients gleichzeitig auf Daten zugreifen, führt kein Weg an der Lösung Cluster vorbei ...
 
Zurück