PDA

Bekijk Volledige Versie : capaciteits vraag



MrGlass
30/08/05, 10:04
Hi,

Ik ben momenteel werkzaam voor een internetbedrijf.

Ik heb wat vragen over mogelijke capaciteits problemen die we kunnen gaan krijgen.

Wat info:
- We draaien een website op 3 servers momenteel.
- Deze maand zijn we al weer dik over de 1.000.000 uniques heen (komen op ongeveer 1.250.000 uit)
- Het is GEEN adult site

1x server is de Windows webserver en heeft 4 cpu's (Xeon 2.0Ghz) en 4GB geheugen

2x DB server met beide 4 CPU's en 4GB geheugen



Momenteel is de load van de webserver CPU's tussen de 70% en de 100%. (afhankelijk van de tijd van de dag)

De database servers hebben beide een load van ongeveer 40% a 50% en hebben nog wel ruimte over om te groeien.



Nu verwachten we binnen een aantal weken een verdubbeling van het verkeer. Ik denk dat de webserver dat zeker niet aan kan en dat zou geen goed nieuws zijn als die uit zou vallen.

Nu had ik het volgende bedacht:
Een router/switch plaatsen die verkeer kan splitsen tussen 2 servers (loadbalancer) en een extra webserver plaatsen met daarop exacht dezelfde bestanden als op de bestaande webserver.

Is dat zo makkelijk als ik het nu beschrijf of zitten er addertjes onder het gras?
Wie kan mij voorzien van wat tips/valkuilen?

Alvast bedankt!
Joris

Netbyte
30/08/05, 10:29
2 webservers met exact dezelfde data met daar tussen een loadbalancer zou zeker een hele mooi optie zijn! Dan is het ook veel makkelijk om bij het groeien nog een 3e server erbij te plaatsen. Je zou eens kunnen kijken bij http://www.tweakers.net/reviews/269 . Tweakers.net gebruikt ook loadbalancers en een clusterachtig filesystem tussen haar webservers.

smurf
30/08/05, 10:33
Eh, 1.250.000 uniques is 28 bezoekers per minuut, wel vreemd dat je weserver in die confuguratie zo stressed is, is het een zware site applicatie misschien?

Ik denk dat je toch al wat betere performance kan krijgen door de software 'te tunen'?

electric
30/08/05, 10:59
Smurf,

Hij heeft het over 1,250,000 uniques. dat zegt niets over de aantal requests per seconde :)

Triloxigen
30/08/05, 11:05
Origineel geplaatst door smurf
Eh, 1.250.000 uniques is 28 bezoekers per minuut, wel vreemd dat je weserver in die confuguratie zo stressed is, is het een zware site applicatie misschien?


Veel mensen maken zo'n vergelijking, terwijl die nergens op slaan..
's Nachts is het vaak minimaal druk, tijdens etenstijd ook en dan heb je af en toe tussendoor pieken.

CharlieRoot
30/08/05, 11:06
Origineel geplaatst door Netbyte
2 webservers met exact dezelfde data met daar tussen een loadbalancer zou zeker een hele mooi optie zijn! Dan is het ook veel makkelijk om bij het groeien nog een 3e server erbij te plaatsen. Je zou eens kunnen kijken bij http://www.tweakers.net/reviews/269 . Tweakers.net gebruikt ook loadbalancers en een clusterachtig filesystem tussen haar webservers.
Hier sluit ik me bij aan, in dit geval is load balancing de beste oplossing ( 2 webservers, 1/2 db servers en één load balancer moet kunnen).

bascension
30/08/05, 11:10
Hallo,

Ikzelf heb ook zulke sites beheerd, en dan is het eerlijk gezegd geen luxe om over te stappen op linux, toen ik windows gebruikte had ik ook dezelfde problemen, maar eenmaal op linux werd het al een stuk stabieler.

Nu hangt het er natuurlijk wel vanaf om wat voor applicaties het gaat.

Vragen pm me.

Sebas

euro-access
30/08/05, 11:23
een optie met windows is het clusteren alleen is de vraag of windows wel de juiste keuze is.

voor Loadbalancing neem een echte loadbalancer. Alteon bijvoorbeeld.
Hardwarematig gaat toch altijd boven de software matige oplossingen.

Op ebay incl garantie te krijgen voor Euro 1500 - 2000,-

Maar dan heb je ook wat.

MrGlass
30/08/05, 11:48
Bedankt alvast voor de reacties... Hier kan ik al wel wat mee...
Er zijn nog wat vragen boven gekomen bij mij...

Het gaat hier over 75.000.000+ hits in de maand augustus alleen al...

Oke... Ik ga het nog even wat ingewikkelder maken...
We houden het verkeer bij via Webtrends... Misschien dat dat problemen gaat geven als daar een loadbalancer tussenstaat? (deze vraag ga ik ook daar neerleggen...)
En hoe zal dat met sessions geregeld worden? ik kan me voorstellen dat als ik een session aanmaak en ik kom via de LB op de "andere server" terecht ik geen session heb? (of wordt dat ook allemaal geregeld dan?)
Hoe zit dat met file-uploads van gebruikers van de website? Die moeten dan op beide servers terecht komen... (wordt dat ook allemaal geregeld door de LB?)

De hele site is geschreven in asp. De overstap naar Unix zit er niet in. (het is al een vrij oude website, jaartje of 5...) De code is niet optimaal te noemen, maar ook zeker niet slecht. Maar de database kant zit zeer goed in elkaar. Het is echt alleen de webserver die de klappen krijgt.

Onder werktijd en na etenstijd liggen idd de pieken waarop de webserver bijna continue 100% cpu tijd gebruikt. snachts is het qua bezoek relatief rustig maar dan worden de mails verzonden (+/- 500.000 per maand), xml in en exports gedaan en nog allerlei berekeningen

Ik zal me nog eens gaan verdiepen in die ene LB en de link van hierboven...

XS-24
30/08/05, 11:55
Neem eens contact op met wido (PCextreme) deze is van plan een cursus clusteren te geven.

xYnta
30/08/05, 12:42
Origineel geplaatst door Netbyte
2 webservers met exact dezelfde data met daar tussen een loadbalancer zou zeker een hele mooi optie zijn! Dan is het ook veel makkelijk om bij het groeien nog een 3e server erbij te plaatsen. Je zou eens kunnen kijken bij http://www.tweakers.net/reviews/269 . Tweakers.net gebruikt ook loadbalancers en een clusterachtig filesystem tussen haar webservers.

Hier sluit ik mij zelf idem dito bij aan, een load balancer is in de geval de beste oplossing. Zorg er wel voor dat beide servers perfect zijn geconfigureerd.

IProuting
30/08/05, 12:44
Neem niet "any other loadbalancer" maar een LB waarmee je even vooruit kunt.

Axis (NetMatch)
30/08/05, 20:44
Hmm.. je wil natuurlijk als eerste je applicatie tunen..

We hebben ook onder andere een site draaien die 80%-100% van een dual xeon 3Ghz trok, na 1 simpel stukje code aan te passen ging die load terug naar 20%-40%.. Slecht geprogrammeerd? Niet echt, maar het kon stukken beter.

Daarnaast kun je nog overwegen (weet niet wat voor site het is) of het de moeite waard is om de applicatie over te coden in ASP.NET. Wij zijn zelf ook van huis uit webapplicatie-bouwer, en ASP.NET kan(!) in veel gevallen stukken beter performen dan ASP, en is een stuk beheersbaarder. Output caching en dergelijke is ook allemaal stukken verbeterd, ASP is toch ook wel een stuk ouder, en is een scripting language, geen gecompileerde applicatie. Als je de site kunt (laten) hercoden en het spaart je weer een webserver van €7k uit.. tja..

Er zijn meerdere opties.. Je zou om de zoveel tijd een ASP>HTML export kunnen doen, er zijn ook grote jongens die op deze manier hun throughput vertiendubbelen.. Maar dat kan natuurlijk niet met een forum, etc.. Ook zoekopdrachten zou je al op een andere manier kunnen 'voorbewerken', etc..

Als bovenstaande je niets lijkt zou een extra webserver en een HW-load balancer een oplossing kunnen zijn. Laatst nog een offerte binnen gehad van een Cisco load balancer, dingen schijnen super te werken.. Je kunt bij die dingen een affinity opgeven, of je wilt dat iemand van 1 ip adres altijd naar dezelfde server gaat (om sessies niet te breken), of je kunt op source port onderscheiden, etc.. Voordeel hiervan is dat als een server geen correcte response teruggeeft, of niet reageert, de Cisco hem meteen niet meer mee laat doen in de requests. Alleen zijn die dingen erg prijzig.

Wat ik zelf zou doen is niet nog zo'n dure dual bak nemen, maar een of twee simpele PowerEdges 1850 bijvoorbeeld, 1U doosje met 2 Xeon's, en dan Microsoft's Network Load Balancing service (NLB) gebruiken. Is een software oplossing, die ook redelijk goed schijnt te werken, en die vereist geen extra hardware investeringen, en is ook erg flexibel. Je kunt zelf ook een loadverdeling opgeven, en als je servers het te zwaar krijgen, hang je gewoon nog een server ernaast.. Krijgt die het te zwaar, hang je er gewoon nog een naast, etc.

Als je gaat load balancen of clusteren (is niet hetzelfde) moet je er wel rekening mee houden dat je code ook goed in elkaar zit. Als 2 applicaties tegelijkertijd gaan wegschrijven in 1 database, moet je weer rekening houden met extra factoren.

Ahead-IT
30/08/05, 21:05
Even een vraagje, welke RAID controller gebruik je? SCSI? Aantal disks en RAID level?

bascension
30/08/05, 22:46
ASP modules zijn er ook voor linux.

En hoe zal dat met sessions geregeld worden? ik kan me voorstellen dat als ik een session aanmaak en ik kom via de LB op de "andere server" terecht ik geen session heb? (of wordt dat ook allemaal geregeld dan?):

Wat wij doen met loadbalancers is wanneer een bezoekers naar 1 van de servers word gestuurd dan blijft hij ook op die server dus heb je geen kans dat terwijl het bezoek de sessie verloren gaat.

electric
31/08/05, 11:10
Origineel geplaatst door bascension
ASP modules zijn er ook voor linux.

En hoe zal dat met sessions geregeld worden? ik kan me voorstellen dat als ik een session aanmaak en ik kom via de LB op de "andere server" terecht ik geen session heb? (of wordt dat ook allemaal geregeld dan?):

Wat wij doen met loadbalancers is wanneer een bezoekers naar 1 van de servers word gestuurd dan blijft hij ook op die server dus heb je geen kans dat terwijl het bezoek de sessie verloren gaat.

Als je het helemaal goed wilt doen kan je 't doen via een externe opslag met bijv een San oplossing.
2 of 3 webservers die alle content lezen via de SAN.
zo heb je ook geen problemen met sessies die verloren gaan.

Axis (NetMatch)
31/08/05, 11:13
Origineel geplaatst door electric

Als je het helemaal goed wilt doen kan je 't doen via een externe opslag met bijv een San oplossing.
2 of 3 webservers die alle content lezen via de SAN.
zo heb je ook geen problemen met sessies die verloren gaan.
Je webservers content laten lezen van een SAN heeft als voordeel dat je geen content meer hoeft te synchroniseren, maar wat heeft dat te maken met sessies?! (nofl)

MrGlass
31/08/05, 11:31
Goed...

Ik denk dat we voor de LB gaan hier.
Er is al een andere server (gelijk aan de andere webserver) gevonden.

Met webtrends is er geen enkel probleem als er meerdere servers gebruikt worden. (enkel een extra licentie vereist...)

Vanavond komt de stresstest op de huidige setup om te bepalen of het echt noodzakelijk is om die extra server te plaatsen.


Het overschrijven van de asp code naar .NET is geen optie. Het zit wel in de pijplijn maar dat is dan echt voor een compleet nieuwe site. En ik geef liever 7K uit aan een nieuwe server dan de site opnieuw te coden ;)

Wel een goede tip was om te kijken hoe het met de database zit als 2 servers data gaan schrijven en lezen tegelijk... Neem ik mee in mn onderzoekje!

Ik houd jullie wel op de hoogte voor degene die dat leuk vinden!

jinxedworld
31/08/05, 11:33
Origineel geplaatst door Axis (NetMatch)

Je webservers content laten lezen van een SAN heeft als voordeel dat je geen content meer hoeft te synchroniseren, maar wat heeft dat te maken met sessies?! (nofl)

Dan laat je je tmp-dir ook mounten via NFS zodat de sessies op beide servers bekend zijn :) .

Axis (NetMatch)
31/08/05, 11:46
Origineel geplaatst door jinxedworld


Dan laat je je tmp-dir ook mounten via NFS zodat de sessies op beide servers bekend zijn :) .
IIS werkt net iets anders dan Apache op *nix ;) IIS slaat alle sessies in-memory op, of in een sql db.

jinxedworld
31/08/05, 11:47
Vervelend spul, dat Windows :p . Ik houd me toch maar het beste bij *NIX blijkt maar weer :)

bascension
31/08/05, 12:08
en toch lijkt mij beste oplossing:P asp module op *nix installeren loadbalancer tussen 2 servers :D en je bent waarschijnlijk vanje probleem af:P was ik wel althans

electric
31/08/05, 13:04
Origineel geplaatst door Axis (NetMatch)

Je webservers content laten lezen van een SAN heeft als voordeel dat je geen content meer hoeft te synchroniseren, maar wat heeft dat te maken met sessies?! (nofl)

Met alle content bedoel ik dus ook de sessions.
Want die kan je altijd nog in een andere dir laten schrijven, dus bijv naar de san.



MrGlass

Wel een goede tip was om te kijken hoe het met de database zit als 2 servers data gaan schrijven en lezen tegelijk... Neem ik mee in mn onderzoekje!



Als de database ook op linux kan draaien ( wat ik betwijfel ) zou je gebruik kunnen maken van GFS, Global File System van RedHat ( zit ook in fedora )
zo kan je met 2 machines schrijven en lezen uit een database die op 1 schijf staat.

Axis (NetMatch)
31/08/05, 13:07
Ik ga er van uit dat het MSSQL db's zijn, die zijn sowieso al gewoon met zoveel machines te benaderen als je wilt, maar je moet even kijken of je eigen logica hier geschikt voor is.

Als je bijvoorbeeld een webshop zou hebben die vanaf twee servers tegelijkertijd 1 product afboeken op de voorraad (terwijl je er nog maar 1 hebt), kun je problemen krijgen..

Dat bedoelde ik met code nakijken ;)

sander
31/08/05, 15:54
Origineel geplaatst door bascension
en toch lijkt mij beste oplossing:P asp module op *nix installeren loadbalancer tussen 2 servers :D en je bent waarschijnlijk vanje probleem af:P was ik wel althans

heb je dat al wel eens geprobeerd een grote asp site op een unix machine te laten draaien met die asp modules voor apache?

niet doen werkt voor geen meter ,lang niet alle asp functies zitten hier in.