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.