# Webserver-Eigenschaften | BITTE UM ANTWORT



## BorisBen (14. März 2006)

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. ]


----------



## Mamphil (14. März 2006)

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


----------



## BorisBen (15. März 2006)

Eben das ist das Problem... es ist vorerst nicht vorauszusehen wieviele Anfragen pro Sekunde oder Minute kommen werden. Das ist eben die Theorie.


----------



## Dennis Wronka (15. März 2006)

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
> ...


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
> ...


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
> ...


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 (15. März 2006)

Moin!

Vielen, vielen, vielen Dank für diese super Antwort! Das hilft mir echt weiter.

Greetz


----------



## Arne Buchwald (15. März 2006)

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 ...


----------

