harmagedon

Har du en katastrofplan för din webbplats?

Hårddiskkrasch

Vad händer om för många besöker din webbplats på en gång? Det är ett lyxproblem att ha, men inte desto mindre ett problem.

Vi är många som hoppas, drömmer och aktivt jobbar med att driva relevant trafik till våra sidor. Men när man når den så kallade tipping point eller kritisk massa är det lätt hänt att det blir tvärtom. Din webbplats kraschar av överbelastning och går inte att nå. (Du kan ju också utsättas för en överbelastningsattack, DoS, eller ännu värre DDoS – en distribuerad överbelastningsattack som sker från flera olika platser.)

Driver du e-handel utan en fysisk butik är det naturligtvis en extra viktig fråga.

Jag planerar just nu för överbelastning. Inte för att jag lär drabbas av det inom en överskådlig framtid, utan för att vara på den säkra sidan. Att veta vad man ska göra när det väl händer. Då är det bara att agera och skrida till verket i stället för att paniskt reagera och hitta på någon ad hoc-lösning i all hast.

Just nu är min största webbplats, Voodoo Film, uppdelad i två delar; ett filmforum som drivs av vBulletin och en redaktionell del som drivs av ett egenutvecklat publiceringssystem. De ligger på var sin server. Valet av vBulletin (php) var enkelt eftersom jag länge surfat på sådana forum, vet möjligheterna och att det redan finns forum med tusentals användare online samtidigt. Mjukvaran klarar det.

Mitt egenutvecklade publiceringssystem (asp.net) använder cache i framför allt presentationslagret, vilket gör att det i princip bara är att hämta sidorna ur minnet, i värsta fall från en cache på hårddisken. Men beroende på sida genereras sidorna på nytt varannan dag eller var tionde minut från databasen. Det låter visserligen bra, men jag föredrar ändå att vara paranoid i förebyggande syfte. (Det är väl lite därför man tar backup?)

Det finns fortfarande inget som slår statiska html-sidor och det är lite dit jag tittar. Jag arbetar även aktivt för att försöka få ned filstorleken. Det sparar även bandbredd, vilket gör att sidorna laddas snabbare och att kostnaden blir mindre.

Så här ser min plan ut:

  • En version för alla. Jag försöker i största möjliga mån att undvika personaliserade sidor. Det var populärt ett tag, speciellt med portaler och liknande utdöda hybrider. Tanken är att man ska cacha det en gång och sedan visa det för miljoner av besökare.
  • Sprid på servrar. En idé är att lägga statiska filer såsom bilder på en egen server. En bild som laddas upp ligger oftast där i flera år, och behöver således inte belasta webbservern som visar statiska eller dynamiska sidor.
  • Gör sidorna små. Google är bra eftersom den är snabbladdad och sidorna är lätta. Du ska ju ändå bara söka där. Tänk på det och utforma dina sidor efter vad besökaren ska göra. Driver du en informativ resurs, som jag, är det omöjligt att undvika stora sidor med tanke på att det är själva innehållet. Men använd css för layout i stället för tabeller, ta bort onödig copyrighttext och förkorta filnamn om du kan.
  • Färre filer på sidan. Har du flera css-, javascript- och bildfiler? Slå ihop dem. Fler http-anrop till webbservern belastar mer i det långa loppet än att hämta en lite större fil en gång.

När webbservern en dag får se harmagedon i vitögat gör jag följande:

  1. Leta upp källan. Ta ett djupt andetag, dricker ett par munfullar vatten och försöker undersöka varifrån trafiken kommer. Om jag vet källan kan jag nog också lista ut vad besökaren är ute efter. (Länkas jag från en ockult sekt kan jag vara säker på att de tagit namnet Voodoo Film lite väl bokstavligt.)
  2. Lägg ut statiska sidor. Ta en kopia av webbsidorna högst upp i sajthierarkin (de länkar som finns i huvudmenyn). Lägg ut som statisk html-fil. Om det är riktigt allvarligt lägger jag bara ut det som besökarna kom dit för.
  3. Glöm inte ditt bästa innehåll. Jag gör också statiska html-filer av de filer som genom statistik visat sig vara de mest eftertraktade. Att hålla koll på de sidor med flest sidvisningar är därför nödvändigt. Innan det händer naturligtvis.

Vissa webbhotell har virtuella miljöer vilket innebär att din hemsida kan spridas lite varstans på ett kluster av hårddiskar. Det borde i teorin göra att två filer kan laddas samtidigt, och därmed snabbare, än om allt ligger på samma hårddisk. Jag är dock alldeles för dum att uttala mig om detta är en sanning. Men det låter logiskt i mina öron.

Har du planerat för en (välkommen) katastrof?