PDA

Bekijk Volledige Versie : hoe bereken je hoe zwaar je server moet zijn



SDIS
06/11/07, 21:20
beste WHT'rs

ik heb een vraag onlangs heb ik met een paar vrienden een samenwerkingsverband op gericht.

we hebben nu zelf allemaal Webbrowser game gemaakt
en we gaan die gezamelijk op 1 server hosten.

nu is de vraag we hebben op dit moment 3 games (4e in aanmaak)
met elk 3500+ members dus in totaal 10.500 geregistreerde gebruikers
dit aantal stijgt al erg snel.

mijn eigen game draait momenteel op een P4 2.4 ghz, 1gb
en die word steeds iets trager.

maar welke hardware moeten we dan gebruiken in onze nieuwe server het is de bedoeling dat er straks maximaal 5 games op worden gehost.

in totaal ongeveer 25.000 accounts

maar kunnen jullie mij adviseren in de hardware waar ik specifiek op moet letten tips geven en is er een manier om zoiets uit te rekenen

het bevat voornamelijk PHP scripts en Mysql DB die zwaar wordt gebruikt.
die Database word heel erg veel geopend.

alvast bedankt voor jullie moeite om hier even naar te kijken
Dennis v.d. Oever

SF-Jeroen
06/11/07, 21:27
Het aantal members in minder interessant, hoeveel zijn er tegelijk online op de pieken?

WebXtra
06/11/07, 21:31
Geen antwoord op je vraag maar misschien wel interesant;

Als ik jullie was zou ik meteen gaan virtualiseren.
Dan zal de ene game, de ander niet in gevaar brengen qua server resources.

En mocht 1 game te veel van de server vraagt, kan hij/zij zijn gevirtualiseerde omgeving eenvoudig verplaatsen naar een nieuwe (eigen) server.

SDIS
06/11/07, 21:48
virtualiseren zat ik al aan te denken maar ik kan het altijd met load-balancing uitbreiden

het aantal members heeft er wel iets mee te maken.
hoeveel op pieken zou het niet weten nu is het meestal 50 tegelijk die een querry opvragen maar op drukke momenten zitten er 200 members tegelijk op
soms wel meer per game

SF-Jeroen
06/11/07, 22:40
Ik zou gaan voor iets wat lijkt op deze configuratie;

DualCore Opteron 270 64 2.0ghz
4 GB Ram
1/2x 74 GB Raptor (10k rpm)

Nu is de vraag of je RAID 1 wil, het zorgt namelijk wel dat de harddiscs trager zijn, ik zou zelf voor RAID 0 (Stripe) gaan, in combi met een dagelijkse backup van de database.

EHS-Jerre
07/11/07, 00:02
ik zou een aparte server voor mysql voorzien, zodat je load dus meer kan spreiden

Lite-On
07/11/07, 00:42
Ik zou persoonlijk voor iets zoals dit kiezen voor het opdelen van taken.
Een server voor de website zelf, en eentje voor MySQL.

Als je even vooruit wilt, zou ik kiezen voor een Dual/Quad core server, met minimaal 4GB ram.
En natuurlijk een paar snelle HD's erin :)

Phu
07/11/07, 03:41
Ik zou gaan voor iets wat lijkt op deze configuratie;

DualCore Opteron 270 64 2.0ghz
4 GB Ram
1/2x 74 GB Raptor (10k rpm)

Nu is de vraag of je RAID 1 wil, het zorgt namelijk wel dat de harddiscs trager zijn, ik zou zelf voor RAID 0 (Stripe) gaan, in combi met een dagelijkse backup van de database.

waarom dan niet voor raid 5 is veiliger en niet veel trager

stripe is bagger zeker voor een productie server
mocht 1 schijf dood gaan hoppa ben je alles kwijt

crazycoder
07/11/07, 11:14
Wij behalen goede resultaten met raid controllers. Denk aan bijv megaraid, scsi, met 15000 rpm schijven. Seagate maakt hier hele redelijk schijven voor.
Maak wel voldoende budget vrij, want dit is geen echt goedkope oplossing.

In plaats van veel geld aan hardware uitgeven zou ik eerst eens naar database en scripts kijken. Bepaal ook eerst waar het probleem zit, disk IO, geheugen of belasting CPU.
Als de server nu aan het swappen slaat kan je wellicht voorlopig volstaan met extra geheugen..

RAID 0 zou ik zelf niet snel voor kiezen, alhoewel je met regelmatige backup en de bin logs op een andere schijf/raid alles wel kan reconstrueren.

Wynand
07/11/07, 11:19
Dan is Raid 0+1 een betere oplossing, zolang niet de hele array opnieuw opgebouwd moet worden (enkel HP doet dat nog in sommige van hun systemen).
De CPU belasting is minder zwaar dan bij raid 5 voor zo ver ik me herinner.
Dit zou je eventueel zelfs met gewone 7,2K RPM disks kunnen.

bvankuik
11/11/07, 10:59
Als je budget kleiner is dan je tijdsinvestering, ga ik met crazycoder's punt "software optimaliseren" mee.

Ik zie suggesties staan van 'kijk eens naar de bottleneck', die dan CPU, memory of disk moet zijn. Maar die worden altijd veroorzaakt door PHP en/of MySQL want meer draait er niet.

Ik zou zelf als eerste naar MySQL kijken met tools als mytop of iets dergelijks, of de manier waarop scripts MySQL gebruiken.

Om scripts te timen: in een file die overal geinclude wordt bij de start, zet neer:



$time_start = microtime(true);


En in een of andere footer, zet:



$time_end = microtime(true);
error_log("Script " . __FILE__ . " runtime: " . ($time_end - $time_start));


Kijk dan naar Apache's error log en ga lekker greppen en sorteren tot je een paar boosdoeners hebt.

crazycoder
11/11/07, 11:36
Als je budget kleiner is dan je tijdsinvestering, ga ik met crazycoder's punt "software optimaliseren" mee.

Met slecht geschreven scripts en idem database kan je een xeon op z'n knietjes krijgen terwijl een P4 fluitend hetzelfde spul kan draaien als het goed geoptimaliseerd is.

Als je basis niet klopt krijg je er in de toekomst meer problemen mee.


Ik zie suggesties staan van 'kijk eens naar de bottleneck', die dan CPU, memory of disk moet zijn. Maar die worden altijd veroorzaakt door PHP en/of MySQL want meer draait er niet.

Apache :)

Dus toch optimaliseren.

wonko
11/11/07, 11:58
Ga eerst al eens zoeken wat het meest belastend is voor je huidige server. Is dit het gebruik van de database, is dit het berekenen en verwerken van de games door de processor, is het het geheugengebruik dat wat verkeerd zit voor het OS... aan de hand daarvan kan je een profiel opstellen wat je precies wil qua server (wat is belangrijk, wat niet).

Verder is meestal de database en de applicatie eenvoudig te verbeteren met enkele kleine ingrepen. Huur misschien even een firma in die je wat kan helpen hiermee, of zoek een cursus. Als bij je database "index" of "normalisatie" je niets zegt, ga het even opzoeken op het internet.

Meten is weten, en zonder te weten is het in het donker tasten: "je gaat een autorace rijden, kies de beste auto hiervoor". Zonder de informatie welke ondergrond, welk klimaat, welke parcours, kan je heel fout uitkomen (4x4 op een circuit, of een F1 bolide op een bergweg zijn allebei not-done).

bvankuik
11/11/07, 15:31
Wat mij opviel qua PHP is dat ik nog geen algemene tool heb gevonden die je een dagje laat draaien en vervolgens zegt: "hier is de top-10 van meestgedraaide en/of langzaamste scripts".

Xolphin
11/11/07, 15:51
Ik denk niet dat je veel zal hebben aan de meeste gedraaide of de meest langzame scripts. Het meeste gedraaide script kan best wel eens geen enkele overhead hebben, maar gewoon veel aangeroepen worden. En als een langzaam script maar een enkele keer per dag opgeroepen wordt, zou ik dat ook niet erg vinden. Het beste profile je alles per applicatie en kijk je daar wat je daar kunt besparen. Daarnaast kun je caching en dergelijk gebruiken, APC (Alternative PHP Cache) bijvoorbeeld. Je configuratie goed instellen, en dan vooral MySQL, is het belangrijkste om te doen.

Via Google zijn er een heleboel tutorials over te vinden, http://phplens.com/lens/php-book/optimizing-debugging-php.php is bijvoorbeeld erg nuttig.

Met een juiste configuratie en SQL's die indexes juist gebruiken kun je soms meer doen dan met tweemaal zoveel hardware.

popking
12/11/07, 22:50
Wat mij opviel qua PHP is dat ik nog geen algemene tool heb gevonden die je een dagje laat draaien en vervolgens zegt: "hier is de top-10 van meestgedraaide en/of langzaamste scripts".


Profilers zitten in o.a. in de ontwikkelomgevingen van Zend Studio en van Nusphere. Laatsgenoemd gebruik ik: http://www.nusphere.com/products/php_profiler.htm

Die profilers geven een goede eerste indruk.

Volgens mij geeft "Zend Platform" een grondig inzicht op de draaiende server. Zie ook: http://www.zend.com/products/zend_platform/live_demo
Daar kun je zien wat je kunt verwachten van zend platform...

Overigens is er een vmware appliance met een geinstalleerde "Zend Platform" die je gemakkelijk kunt downloaden en testen....

Suurbier
06/12/07, 13:12
Wie zegt dat het slecht gescript is?
De TS geeft aan het uniek zelf gemaakt te hebben dus ik neem aan als je uberhaupt zelf een vollledig spel script dat je verstand van PHP/MySQL hebt.

Ramon Fincken
06/12/07, 13:21
Wie zegt dat het slecht gescript is?
De TS geeft aan het uniek zelf gemaakt te hebben dus ik neem aan als je uberhaupt zelf een vollledig spel script dat je verstand van PHP/MySQL hebt.

ik heb ooit eens iemand gezien die een eigen forum had gescript !
Geweldig, maar het zat me toch brak in mekaar....

dus conclusie, je kunt niet altijd uitgaan dat iemand goed/keurig/veilig script puur omdat hij wat 'groots' neerzet.

crazycoder
06/12/07, 14:30
Wie zegt dat het slecht gescript is?
De TS geeft aan het uniek zelf gemaakt te hebben dus ik neem aan als je uberhaupt zelf een vollledig spel script dat je verstand van PHP/MySQL hebt.
Ja, wie zegt dat? Niemand toch? Er wordt wel aangegeven dat er op dat punt mogelijk het een en ander te optimaliseren valt.

Ik neem overigens niets zomaar aan, wat ik wel in de praktijk (te) vaak meemaak is dat iemand een script in elkaar prutst met voorbeelden van phpfreaks en weet ik veel wat nog meer.. Meestal zonder enige aanpassing waardoor de gaten er standaard in zitten. Als je dat dan laat draaien op een niet genormaliseerde database zonder indexen dan moet je niet gek staan kijken als het traag wordt.
Tot zover verstand van php en mysql hebben.

Ik ken ts niet goed genoeg om diens kennis te kunnen beoordelen. Vast staat dat je met een paar goede indexen en het optimaliseren van queries een forse verbetering in de performance kan bereiken.

Dat er op enig moment geoptimaliseerd moet worden kan te maken hebben met een matig ontwerp of met de groei die een applicatie doormaakt.

Ramon Fincken
06/12/07, 14:33
I say amen to that :)