# Serverauslastung



## saila (31. Mai 2006)

Hi,

kann mir jemand erklären, wie das mit den Servern so abläuft?

Also, da steht ein Server der eine oder mehrere Ferstplatten hat. Wieviel Zugriffe verträgt dieser Server von Usern, bevor er Anfragen in eine Warteschlange stellt?

Wieviele User können maximal zugreifen bzw. ab wann brauch man einen zweiten Server?

Angenommen die Datenbank müsste rund 5 Mio. User verwalten. Wie müsste man sich bzgl. Server einrichten und das zzgl. der Datenbank?


----------



## Dr Dau (31. Mai 2006)

Hallo!

Zu Zahlen und Fakten kann ich Dir eigentlich nichts sagen, da ist Arne sicherlich der geeignetere Ansprechpartner. 

Viel wichtger als die Zahl der zu verwaltenen User ist die Frage wie viele User gleichzeitig Zugriff haben sollen.

Allein die Anzahl der Festplatten bewirkt ja nur eine höhere Speicherkapazität.
Um eine höhere Performance zu bekommen, sollten diese an einem RAID mit entsprechendem RAID-Level betrieben werden.
Zum Thema Hardware-RAID vs. Hardware-RAID gab es neulich erst eine Diskusion (Stichwort: Fake-RAID).

Zu der Warteschlange habe ich neulich erst gelesen dass man dazu bei Apache etwas in der httpd.conf Eintragen kann.
Allerdings habe ich die Seite nicht zu meinen Bookmarks gelegt (so viele User erwarte ich nicht  ).
Sollte aber im Apache-Maunal stehen (evtl. kann Arne ja ein Stichwort nennen).

Man kann auch verschiedene Serverdienste auf mehrere Server verteilen.
So kann z.b. Apache auf dem einen Server laufen und MySQL auf dem anderem.
Du könntest sogar soweit gehen die verschiedenen Datenbanken auf mehrere Datenbankserver aufzuteilen.

Mehrprozessor-Systeme (falls das überhaupt noch jemandem ein Begriff ist) spielen, so scheint mir, nur noch bei z.b. aufwendingen mathematischen Berechunungen eine Rolle.
Zumindest sind diese, dank der modernen Prozessoren (Stichwort z.b. HT-Technologie), im "normalem" Serverbetrieb praktisch nicht mehr zu finden.

Auf jedenfall solltest Du aber ein bewährtes und verlässliches Betriebssystem wählen..... z.b. Debian.

Soviel zur Theorie..... und nun ist Arne an der Reihe. 

Gruss Dr Dau


----------



## saila (31. Mai 2006)

Danke dir erst mal.

Ausgehend von der Frage, wieviele User gleichzeitig zugriff haben müssen/ sollen ist meine Überlegung bei rund 2 - 5 Mio.

Warum:
Das Projekt wird weltweit laufen. Es ist also nicht abzuschätzen, wieviele User tatsächlich zugreifen (auf einmal).

Mal angenommen eine Anbieter verwaltet rund 80 Mio. User. Welche Ausstattung sollte das System insgesamt haben. 

Wie müsste die Datenbank aufgestellt sein. Müssen es mehrere sein (soviel ich bereits weis ja).

Welche Server wären hierfür ideal, vor allem weil das ganze aus Sicherheitsgründen 2-Fach gespiegelt werden müsste.


----------



## saila (1. Juni 2006)

Schade, dass dieser Bereich des Forums nicht so stark frequentiert wird wie andere.


----------



## Flex (1. Juni 2006)

Liegt vielleicht auch daran, dass nicht ganz soviele Leute Wissen davon haben...

Vielleicht versuchst du es mal im Server Support Forum.
Meiner Meinung nach ein sehr nettes Forum rund um das Thema Server...

Und nein, ich bin dort ebenfalls nur ein User, also keine Eigenwerbung.


----------



## Dennis Wronka (1. Juni 2006)

Also 2-5 Millionen User gleichzeitig fuer einen Server sind ganz schoen hoch gegriffen.
Mal ein kleines Rechenbeispiel:
2 Millionen User wollen eine 1KB grosse HTML-Seite von eimem Server mit einer 100MBit-Anbindung abrufen. Aufgrund der Einfachheit lassen wir mal ausser Acht, dass die all diese User gleichzeitig Anfragen senden wuerden (was wahrscheinlich allein schon einem DoS gleichkaeme). Weiterhin verzichten wir bei unserer Berechnung auf den HTTP-eigenen Overhead durch Header-Daten.
Es sollen also 2.000.000 mal 1KB abgeholt werden, also 2.000.000KB, was schonmal knapp 2GB entspricht.
2.000.000KB entsprechen ca. 1.953MByte, wie gesagt, knapp 2GB.
100MBit/s entsprechend 12.5MByte/s.
Die Auslieferung von 1.953MByte dauert bei 12.5MByte/s 156.24 Sekunden, also gut zwei-einhalb Minuten.
Wenn nun die ganze Bandbreite fair zwischen den 2.000.000 Usern aufgeteilt ergibt das pro User die wahnsinnige Geschwindigkeit von 0.0064 KByte/s.

Ich denke es ist klar worauf ich hinaus will, oder?
Das Stichwort was dann solche gigantischen Unternehmen moeglich macht ist Load-Balancing.


----------



## saila (1. Juni 2006)

Hi Dennis Wronka,

da ich mich mit dem Thema neu beschäftige, sagen mir deine im Stichwort gefassten Infos nicht viel.

Mal angenommen man hätte rund 5 Mio. User und in der Spitze 50 Mio. User, wie wäre die Sache mit den Servern zu klären?

Ist ist das mit Datenbanken? Ein Server hat ja in diesem Fall mehrere Festplatten. Die Datenbank hätte somit eine eigene Platte oder wie ist das alles im Aufbau zu verstehen?

Wieviele Server bräuchte man, mit welchen Leistungen und welchem Gebäude (ironisch)?


----------



## Dennis Wronka (1. Juni 2006)

Beim Load-Balancing wird mit mehreren Servern gearbeitet.
Bei so vielen Usern gleichzeitig muss das natuerlich auch schon ein richtig guter Haufen sein um vernuenftige Geschwindigkeiten zu garantieren, und eine 1000MBit-Anbindung an das Internet, natuerlich eine pro Server, ist auch zu empfehlen.
Da das alles doch sehr grosse Ausmasse hat hab ich mich bisher auch nur theoretisch damit auseinandersetzen koennen, ist fuer meinen Geldbeutel doch etwas zu teuer.


----------



## saila (1. Juni 2006)

Ok.

Schraube ich das ganze mal runter auf 100.000 User. Was wäre hierfür am besten?


----------



## Arne Buchwald (1. Juni 2006)

Grüße in die gesellige Runde 

Dr Dau: Ich habe gedacht, dass es sich hier um MRTG und Konsorten handeln würde und bin dann doch immer wieder über den Thread hinweg gekommen. 

saila: Die Lösung besteht, wie Dennis schon geschrieben hat, die Dienste auf separate Server aufzuspalten. Unter Kostenaspekten würde ich zu Beginn erst einmal auf eine Gigabit-Anbindung verzichten, sondern unter Benutzung von LVS einen Server-Cluster zusammenstellen.



> Das Projekt wird weltweit laufen. Es ist also nicht abzuschätzen, wieviele User tatsächlich zugreifen (auf einmal).


Insbesondere wenn die real (hohen) Zugriffszahlen unklar sind, sollte gleich auf einer Cluster-Lösung aufgebaut werden. Das hat den Vorteil, dass jederzeit unkompliziert weitere Maschinen in den Cluster gehängt werden können.

Für die Datensicherheit ist es bei solchen Dimensionen selbstverständlich, dass alle Server mit entsprechendem RAID ausgestattet sind und zusätzlich alle Daten auf einen oder zwei zusätzliche Backup-Server übertragen werden, um so im worst-case (wenn Daten auf den produktiven Servern ungewollt gelöscht werden sollten) die Daten auch zurückspielen zu können. Je nach Wichtigkeit kann der Backupprozess auch in sehr kurzen Intervallen stattfinden.

Die großen Massenanbieter sind für ein solches Projekt ungeeignet, da hier einerseits viel individuelles Know-How und Flexibilität erforderlich sind. Außerdem sollte ein solches Projekt in obigen Dimensionen gleich mit dem Provider von Anfang an zusammen durchgeplant werden, da ein Cluster eben nicht in ein paar Stunden aufgesetzt ist. Hinzu kommt die sehr individuelle Server-Konfiguration, da auch hier bei der eingesetzten Software enorm Performance herausgeholt bzw. verloren gehen kann.

Wir können dir sicherlich mit Rat und Tat zur Seite stehen, um den Cluster gemeinsam aufzuziehen. Ich würde mich freuen, wenn du mir deine Telefonnummer zuschicken könntest, um die ersten Schritte zu besprechen. Alternativ würde ich mich über einen Rückruf unter +49 (0) 4247 1381 sehr freuen.

Viele Grüße,
Arne


----------



## saila (1. Juni 2006)

Hi Arne,

danke für die ergänzenden Infos.

Da du wie schon erwähnt von Beginn an das Projekt durchgeplant werden muss, bin ich eben auf der Suche nach entsprechenden Antworten.

Habe mir diesen Thread auch vermerkt, so das ich jederzeit auf die Telefonnummer zurückgreifen kann, wenn erste Gespräche anstehen. 


Dennoch - könnt ihr mir ein paar Zahlen nennen zu:

Wie viele User werden von einem Server (unter Beachtung der Ausbaubarkeit) aufgenommen, ohne das diese in eine Warteschlange auflaufen?

Wo würde die MySQL Datenbank liegen (Bspw. MySQL-Datenbankserver?), wobei die Menge an Daten wohl kaum mit einer zu bewältigen wäre.

Was wäre, wenn ein Onlinespiel mit dazu kommt (angenommene User online im Spiel rund 100.000), wobei wir hier die Aufteilung überlegen, je Land oder max. 3 Länder zusammen zu fassen - Thema Game Server / Route Server?

Danke für die Infos vorab!


----------



## Arne Buchwald (1. Juni 2006)

saila hat gesagt.:
			
		

> Wie viele User werden von einem Server (unter Beachtung der Ausbaubarkeit) aufgenommen, ohne das diese in eine Warteschlange auflaufen?


Eine Warteschlange gibts nicht. Wenn einer der Komponenten (HTTP-Server, MySQL, IO-Last, etc.pp) ausgelastet ist, werden die anderen ebenfalls ausgebremst.



> Wo würde die MySQL Datenbank liegen (Bspw. MySQL-Datenbankserver?), wobei die Menge an Daten wohl kaum mit einer zu bewältigen wäre.


Das hängt jetzt wieder von deiner Anwendung ab. Wenn wirklich *vviele* MySQL-Zugriffe erfolgen, sollte die Anwendung dringend so programmiert sein, dass SELECT-Anfragen und UPDATE / INSERT-Statements an unterschiedliche Server geschickt werden. Dadurch kannst du dann geschickt mit reinen dublizierbaren MySQL-Slave-Servern und einem MySQL-Master-Server arbeiten.



> Was wäre, wenn ein Onlinespiel mit dazu kommt (angenommene User online im Spiel rund 100.000), wobei wir hier die Aufteilung überlegen, je Land oder max. 3 Länder zusammen zu fassen - Thema Game Server / Route Server?


Eine solche Aufteilung kann sinnvoll sein, wenn es zu viele Daten sind. MySQL fasst allerdings bereits eine ganze Menge ...


----------



## saila (1. Juni 2006)

Sehr gut, danke dir für die Infos. Jetzt bin ich zumindest auf der Basis beruhigt mit dem Wissen, das bei entsprechender Erstausstattung unter Berücksichtigung späterer Ausbauten, keine Probleme gibt.


----------

