FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Det här är säkert vardagsmat för många av er, men inte för mig.
I dag kör jag allt, dvs både IIS och MySQL, på samma burk. Har märkt en del prestandaproblem när +200 besökare är inne samtidigt och vi på företaget kör lite tyngre saker i vårt affärssystem (egenutvecklat som ligger på samma burk). Då började jag fundera på om man inte skulle ha 1 webserver för besökarna, 1 för oss själva och båda kopplade till en tredje server där MySQL-databasen ligger. Tänker jag fel om det är bättre prestanda jag är ute efter? Är det lätt att "bygga" en sån konfigurering, dvs med 2 webservers som går mot 1 databasserver? Som sagt, rookie på området så var snälla mot mig ![]() |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Bara ett inlägg till!
|
Börja med att klura ut var flaskhalsen är. är det databasen som är flaskhalsen är det möjligt att ni tjänar mest på att köpa en kraftfull maskin för databasen och köra webbservern för sig. Är det webbservern som är flaskhalsen kan ni tjäna på att ha två webbservrar.
Men om det är databasen så hjälper det inte att lastbalansera webbservern, och vice versa. En fördel med lastbalanserad webbserver är att man kan bygga så det går att ta ner en av dem i drift utan att det märks för besökarna (= bättre upptid), men om det inte är där flaskhalsen ligger s hjälper det inte för prestandan i övrigt. Att lastbalansera två webbservrar är inte speciellt svårt. Det du bör tänka på är hur sessioner sparas; om de körs lokalt på varje maskin så ska lastbalanseraren kanske vara persistent så att samma besökare alltid hamnar på samma maskin. Att sedan köra två klienter mot en databas är så lätt att du inte ens behöver tänka på det; databaserna är redan byggda för att stödja flera samtidiga klienter. Senast redigerad av emilv den 2010-12-29 klockan 17:17 |
|||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Har WN som tidsfördriv
|
Är belastningen likvärdig mellan webbservern och databasen så kan ni kanske separera dem till en dedikerad databasserver och en dedikerad webbserver.
Behöver ni verkligen en egen server för ert affärssystem? Ett annat alternativ är se över om ni kan minska belastningen genom att optimera lite inställningar för cache och kanske implementera en minnescache för databasen med memcached. Memcached kan ni också använda för att spara sessioner med PHP så att ni kan dela sessionerna mellan flera webbservrar som emilv sa. Ett tredje alternativ är att uppgradera servern om det är möjligt. Mer minne till cache kan göra ganska mycket och kan vara väldigt kostnadseffektivt jämfört med att köpa en helt ny server. Men första steget är, som emilv sa, att kolla vart flaskhalsen är så att ni vet hur ni ska gå vidare. |
|||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Mycket flitig postare
|
Som en vis man en gång sa: Optimera aldrig utan att veta vad och varför.
|
|||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Bara ett inlägg till!
|
Du har fått många bra svar. Att baseline:a systemet och sedan göra förändringar utifrån det är så man skall gå till väga.
Vill bara tillägga att det är en dålig idé att dela upp webbservrarna i olika typer för olika målgrupper. Bättre att bygga generiskt med en lastbalanserare framför (NginX är en utmärkt lastbalanserare). Fördelen du får då är att om en maskin går sönder så fungerar fortfarande systemet full ut för alla, även om det är lite segt. Och att man kan ha en webserver "spare". |
|||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Supermoderator
|
Det kan ju också vara vettigt att flytta affärssystemet till en egen server med databas och allt. Men det är svårt att lämna vettiga rekommendationer utan att veta hur systemen och belastningen faktiskt ser ut.
__________________
Jonny Zetterström se.linkedin.com/in/jonnyz | bjz.se | sajthotellet.com | kalsongkungen.se | zretail.se | zetterstromnetworks.se | webbhotellsguide.se | ekonominyheter24.se | nyamobiltelefoner.se | gapskratt.se | antivirusguiden.se | jonny.nu |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
Tack för svaren!
![]() En följdfråga blir hur man tar reda på vart flaskhalsen ligger? (Kör Windows 2000, jo det är sant) |
||
![]() |
![]() |
![]() |
#8 | |||
|
||||
Bara ett inlägg till!
|
Att börja mäta upp allt ifrån request times till databasfrågor är en bra början. Ser du att en request spenderar 80% av sin tid i databasen så bör du kolla på att optimera databasen / indexera bättre / cacha bättre. Ser du att en request spenderar 80% av sin tid i webservern så bör du kolla på att förenkla scripten, loopa mindre, prefabrisera mer statiska moduler, skala upp till fler servrar.
|
|||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Medlem
|
Kolla även uppgradering av MySQL version och PHP version.
Det kan påverka prestanda ganska mycket om ni kör äldre versioner. Tex cachning av sql queries gjordes väl inte i tidiga MySQL,det kan påverka väldigt mycket Uppgradering av win och IIS kommer förmodligen också påverka prestanda positivt.. |
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Medlem
|
|||
![]() |
![]() |
Svara |
|
|