FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Behöver lite råd ang en webserver och vilken hårdvara/mjukvara/mm som kan tänkas vara en vettig spec.
Servern kommer att köra en typ av webbshop, pre-difinierade kunder kommer heltenkelt att logga in och lägga sina veckobeställningar via en typ av webshop. SQL databas. Vid fullt användande kommer det vara ca 10-15K användare och stor majoritet (90%+) av dessa kommer att göra sina beställningar i intervallet lördag till söndag och resten av veckan går mer eller mindre på tomgång i jämförelse med det. Vad är viktigast att prioritera när det gäller en sådan server/hosting som kommer belastas hårt under korta intervaller? |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Mycket flitig postare
|
Förmodligen att du först gör en belastningsberäkning. Använd t.ex. munin för att se belastning vid fullt tryck.
Om du når upp i mer än 70% av cpu kapacitet bör du uppgradera per omgående, en till server för SQL:en t.ex. Alternativt om det är 50% bör du planera för uppgradering innan du når 70%. Dvs, följa 50/70 mönstret. |
|||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Bara ett inlägg till!
|
Du vill ha snabba hårddiskar på en bra diskkontroller. Satsa på SAS-disk och 15k RPM.
Du vill kanske köra RAID 0 (för att snabba upp skrivningar), eller RAID 10 för att även få med spegling. RAID 5 slöar ner skrivningar, så försök undvika det. Du säger inte hur mycket kontroll du har över applikationen, men förmodligen vill du cacha så mycket som möjligt i RAM för att minimera databasfrågorna. Vilken databasprogramvara kör du? Finns det möjlighet att replikera databasen till en till server för att sprida läsningarna mellan två eller flera maskiner? Som Norman säger får du ut absolut bäst information genom att själv testa sajten under hög belastning. Du bör även försöka räkna på hur många som är inne precis samtidigt, alltså vilken tidpunkt som är peak och hur många som då är inne. Det är egentligen den enda intressanta lasten. Att servern står oanvänd resten av veckan spelar ingen roll eftersom du ändå måste optimera för maxbelastningen. I samband med detta bör du även försöka profilera applikationen, alltså försöka hitta flaskhalsarna (vad det är som belastar maskinen mest). Observera att skrivningar är absolut tyngst för databasen då de tar längst tid att utföra för hårddisken, och i många fall förstör möjligheterna till cachning. Försök därför hålla skrivningarna till ett minimum. |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Flitig postare
|
Ett litet tillägg: Något som nästan är värre än en ren skrivning till databasen är en ändring i databasen. Helt plötsligt kan det vara så att det finns en massa roliga låsningar och liknande att börja ta hänsyn till. Troligtvis overkill i det här fallet, men..
(Stora siter löser problemet genom att istället för att ändra data så lägger man bara till en ny rad. Sedan när man läser så tar man bara den nyaste raden. Den gamla får ligga kvar och ruttna bäst den vill.) |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
Tack för svaren!
Då har jag lite mer att gå på, blev lite förvånad att ingen tog upp ram som hårdvara till servern trodde personligen det var något man skulle prioritera? Finns det någon speciell typ jag bör be om och mängd när servern ska sättas ihop? Emilv: Det är en mysql databas som körs. Möjligheten för att replikera databasen borde vara goda som jag ser det och kanske blir det så att man blir tvungen att köra på flera maskiner när fler o fler användare får tillgång. Räknade lite på det och vid någorlunda full användning så bör ca 10K lägga beställningar under lördag-söndag. Det gäller tyvärr länder inom i princip samma tidszoner så det blir ganska koncentrerat. Har statistik från liknande lösning från annat land inom företaget och tittar man på det så ligger 35-40% av trafiken mellan 19-22 på lördagar och söndagar vilket skulle bli ca 1600 användare/h vid peak trafik. Har någon gång tidigare provat MS stresstool, åsikter på hur den fungerar går det att på bra sätt simulera belastning på en sida som kräver login? |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
RAM-regeln är att man ska ha så mycket man har råd med
![]() |
||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Mycket flitig postare
|
||||
![]() |
![]() |
![]() |
#8 | |||
|
||||
Bara ett inlägg till!
|
Att vi inte tog upp RAM beror på flera saker. Till att börja med är RAM inte alltid det första man behöve ruppgradera. Visst kan "ha så mycket RAM du har råd med" vara ett bra tips i vissa fall, men det är inte alltid servern kan använda allt minnet.
Snabba diskar förbättrar alltid prestandan avsevärt. RAM förbättrar bara vissa prestanda och inte alltid lika märkbart som diskarna gör. Med MySQL kan du utnyttja minnet till att ha en stor query cache och därmed snabba upp SELECTs mot tabeller som sällan uppdateras. Nackdelen med query cachen är att den töms för en tabell när tabellen uppdateras, dvs den är värdelös i tabeller som uppdateras ofta. Det som mycket RAM hör bäst är att, i alla fall i Linux, används oanvänt minne automatiskt till disk-cache. Det gör att disken inte behöver hålla på att leta upp dina webbfiler hela tiden och därmed kommer den ha lättare att utföra andra operationer (såsom skrivningar). Om du har 1600 användare i timmen så blir det ca 30 användare i minuten (räkna på hur lång tid det tar att gå igenom beställningsprocessen om du vore en slutanvändare så vet du hur många som är inne vid varje givet tillfälle). Det känns i alla fall som att du kan hitta en vettig maskin som klarar sådan last. Som sagt, snabba diskar i första hand (15k-RPM SAS är alltid ett hett tips), men se till att maskinen har plats för minne också. Du kan även stresstesta med ab (Apache benchmark), som har stöd för att skicka POST-data. Tyvärr verkar det bara kunna ladda en enda sida flera gånger =/ Vet inget om MS Stresstool, det bör stå i manualen vad det kan göra. Citat:
|
|||
![]() |
![]() |
Svara |
|
|