Överlevnad av en trafikspik: hur ett väntrum håller din webbplats vid liv
Ibland överstiger efterfrågan helt enkelt vad din webbplats kan hantera - en produktnedgång, ett viralt ögonblick, en biljettsläpp. Ett väntrum är skillnaden mellan en kö och en krasch.
Ett väntrum är en virtuell kö som sitter framför din webbplats. När fler besökare anländer än du säkert kan servera, tillåter det människor upp till en kapacitetsgräns och håller resten, visar sin position och en beräknad väntan. Istället för att alla får en trasig webbplats får människorna inuti en fungerande och kön rör sig stadigt. Det svåra är inte köerna – det handlar om att välja kapacitetsnummer.
Det finns ett felläge som cachning inte löser. Caching fungerar eftersom de flesta förfrågningar är för samma innehåll; ett väntrum finns för situationen där de inte är - där tusentals människor samtidigt behöver de verkligt dynamiska delarna av din webbplats. Lägger till i en vagn. Kollar inventarieförteckningen. Betalar.
Du kan inte cacha dig ut ur det, eftersom var och en av dessa förfrågningar är legitimt annorlunda och legitimt dyra. Då har du exakt två alternativ, och bara en av dem slutar med försäljning.
Med ett väntrum
- Besökare får en fullt fungerande webbplats
- Alla andra ser en tydlig position och uppskattar
- Ditt ursprung håller sig inom sina gränser
- Försäljningen fortsätter hela tiden
Utan ett
- Alla kommer på en gång
- Webbplatsen saktar ner, sedan tar tiden slut
- Ingen slutför ett köp, inklusive de tidiga ankomsterna
- Retrievers gör det värre
Felläget utan kö är värre än det först verkar. Under överbelastning misslyckas inte förfrågningar rent - de köar i din ansökan, time out efter trettio sekunder, och besökaren uppdateras omedelbart och lägger till en annan begäran till ett system som redan ligger bakom. En krasch under belastning är självförstärkande på ett sätt som en kö inte är.
Hur köerna faktiskt fungerar
En besökare kommer och kontrolleras
Kanten söker efter en giltig symbol för sessionen. Om de redan har en, passerar de rakt igenom utan dröjsmål och ingen rundtur till någonting.
Om det finns plats, är de tillåtna
Under kapacitetsgränsen är tillträdet omedelbart och osynligt. De flesta besökare på de flesta dagar vet aldrig väntrummet finns.
Om de inte gör det, går de med i kön
De får en kösida som visar deras position och en beräknad väntetid, som söker efter uppdateringar.
Slots frigörs och köerna går framåt
När de aktiva sessionerna avslutas – genom utcheckning, inaktivitet eller att lämna – tas nästa personer i kön automatiskt in.
Hur kön vet att någon har lämnat
Detta är den del som avgör om en kö flyttas eller stannar. Om antagning endast släpptes när en session löpte ut på en timer, skulle en kö gå framåt med timeoutens hastighet oavsett vad folk faktiskt gjorde.
I praktiken tre signaler gratis en plats. En godkänd besökares webbläsare skickar ett periodiskt hjärtslag, så att systemet vet att de fortfarande finns kvar. När de stänger fliken skickar webbläsaren en avgångsfyr, som släpper spåret omedelbart. Och om hjärtslag stannar utan en avgångssignal - ett laptoplock stängs, en telefon förlorar signal - sessionen släpps efter en inaktivitetstid. De två första är vad som får en kö att kännas responsiv; den tredje är säkerhetsnätet.
Välja kapacitetsnummer
Detta är den verkligt svåra delen, och att ställa den fel i båda riktningarna är dyrt.
För högt och väntrummet gör ingenting - du erkänner fler människor än webbplatsen kan tjäna, alla inuti har en dålig tid, och du har lagt till en kö till en trasig webbplats. För lågt och du köar människor i onödan, vilket är en riktig kostnad: en del av alla som blir ombedda att vänta går helt enkelt därifrån.
Numret ska komma från ett belastningstest, inte från intuition. Hitta den samtidighet där dina svarstider börjar klättra medan genomströmningen slutar förbättras, och ställ sedan in kapacitet något under den böjningspunkten så att det finns huvudutrymme. Ytterligare två överväganden:
- Kapacitet innebär aktiva sessioner samtidigt, inte förfrågningar per sekund. En besökare som är inaktiv på en produktsida förbrukar en plats utan att det kostar någonting.
- Sessionens varaktighet är lika viktig som kapaciteten. Med 500 platser och 10-minuters sessioner du tar emot 3000 personer i timmen; halvera sessionslängden och du dubbla genomströmningen - med risk för att skjuta ut någon mitt i kassan.
- Gå förbi allt som inte är en person som handlar. Statiska tillgångar, hälsokontroller, ditt eget teams adresser, återbetalningar från betalningsleverantörer. En kö som fångar upp din övervakning är en kö som mörklägger dig exakt när du behöver se.
Göra väntan uthärdlig
Köpsykologi är en verklig och välstuderad sak, och det handlar om ett resultat: osäkra väntan känns långt längre än kända. En kö som säger "du är nummer 1 240 av 4 100, ungefär sex minuter" upplevs som dramatiskt kortare än samma vänta med en spinner.
Vilket betyder att kösidan förtjänar mer eftertanke än den brukar få. Visa positionen och uppdatera den på ett synligt sätt, så att systemet fungerar korrekt. Ge en uppskattning och var konservativ - en uppskattning som växer är mycket värre än en som krymper. Förklara kortfattat varför köerna finns, eftersom "hög efterfrågan" är lugnande där en oförklarlig väntan är alarmerande. Och erkänna automatiskt snarare än att be folk att uppdatera, eftersom någon som går bort inte ska förlora sin plats.
Slå på väntrummet innan trafiken kommer, inte under. Att aktivera det medan webbplatsen redan misslyckas innebär att kön själv måste konfigureras under belastning, och det fören kö gör är att kort öka förfrågningarna när allas sida laddas om.
Vanliga frågor
Vad är ett väntrum på en webbplats?
Ett väntrum, eller virtuell kö, är ett system som sitter framför en webbplats och begränsar hur många besökare som är aktiva samtidigt. Besökare som anländer medan sajten ligger under sin kapacitetsgräns passerar omedelbart; de som anländer när den är full hålls på en kösida som visar deras position och beräknade väntan och tas automatiskt in som Slots är gratis.
När ska jag använda ett väntrum?
När efterfrågan verkligen överstiger vad din infrastruktur kan tjäna och trafiken inte kan cachas bort - produktdroppar, biljettförsäljning, lanseringar med begränsat lager och virala ögonblick. Det är inte en ersättning för caching, som hanterar det mycket vanligare fallet att många begär samma innehåll. Det är för när tusentals människor samtidigt behöver dynamiska, per person-operationer som checkout.
Hur bestämmer jag kapaciteten för ett väntrum?
Härled det från ett belastningstest snarare än intuition. Hitta den samtidighetsnivå där svarstiderna börjar klättra medan genomströmningen slutar förbättras, och ställ in kapacitet under den punkten för att lämna utrymme. Observera att kapacitet innebär samtidiga aktiva sessioner snarare än förfrågningar per sekund, och att sessionens varaktighet är lika viktig som gränsen – kortare sessioner flyttar fler personer genom, med risk för att kasta ut någon Mitten av kassan.
Hur vet ett väntrum när någon lämnar?
Genom tre signaler. Erkända besökares webbläsare skickar periodiska hjärtslag som bekräftar att de fortfarande är närvarande; stängning av en flik skickar en avgångsfyr som släpper spåret omedelbart; och om hjärtslag slutar utan en avgångssignal, sessionen släpps efter en inaktivitetstid. De två första håller köerna i rörelse, medan timeouten fångar upp stängda bärbara datorer och förlorade anslutningar.
Förlorar ett väntrum dina kunder?
En viss andel av de köade besökarna kommer att lämna, varför kapaciteten inte bör ställas in i onödan. Men alternativet under äkta överbelastning är inte en snabb webbplats - det är en webbplats där förfrågningar timeout, besökare uppdatera och göra det värre, och ingen slutför ett köp inklusive de som kom först. En kö konverterar vissa besökare; en överbelastad webbplats konverterar nästan ingen.
Reservera det för de stunder som motiverar det - droppar, på försäljning, den dag du oväntat hamnar på framsidan av något - och ett väntrum förvandlar "platsen gick ner" till "Jag väntade två minuter och fick min". Vilket är en konversation som ditt supportteam skulle föredra att ha.
Se hur NordicCDN gör detta för din webbplats:
Mads har arbetat inom IT – mestadels som värd – sedan han var 16. Han tog tidigt del i ett SaaS-företag och hjälpte till att växa fram till förvärvet av Visma, har byggt och drivit datacenternätverk och fungerat som CTO för ett danskt datacenter. Han startade NordicCDN för att göra snabb och säker infrastruktur enkel att använda.