Överlevande en trafik spik: hur ett väntrum håller din webbplats vid liv
Ibland överstiger efterfrågan helt enkelt vad din webbplats kan hantera - en produktdropp, ett viralt ögonblick, en biljettutgivning. 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ön - det är att välja kapacitetsnummer.
Det finns ett felläge som caching 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 en vagn. Kollar inventarier. Betalar.
Du kan inte cache din väg ut ur det, eftersom var och en av dessa förfrågningar är legitimt annorlunda och legitimt dyrt. Vid den tidpunkten har du exakt två alternativ, och bara en av dem slutar med försäljning.
Med ett väntrum
- Besökare medgav få 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, sedan gånger ut
- 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 visas. Under överbelastning misslyckas inte förfrågningar rent - de köar inuti 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 letar efter en giltig sessionstoken. Om de redan har en, passerar de rakt igenom utan fördröjning och ingen tur och retur till någonting.
Om det finns utrymme, är de tillåtna
Under kapacitetsgränsen är entrén omedelbar och osynlig. De flesta besökare på de flesta dagar vet aldrig att väntrummet finns.
Om inte, går de med i kön
De får en kösida som visar deras position och en beräknad väntetid, som opinionsundersökningar för uppdateringar.
Slots frigör och kön går framåt
När aktiva sessioner slutar - genom kassan, inaktivitet eller lämnar - släpps nästa personer i linje 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 tillträde 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 är där. När de stänger fliken skickar webbläsaren en avgångsfyr och släpper spåret omedelbart. Och om hjärtslag slutar utan en avgångssignal - ett laptoplock som stängs, en telefon som förlorar signal - släpps sessionen efter en inaktivitetstid. De två första är vad som gör att en kö känns 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 ombeds att vänta lämnar helt enkelt.
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å det finns huvudutrymme. Ytterligare två överväganden:
- Kapacitet innebär samtidiga aktiva sessioner, inte förfrågningar per sekund. En besökare som är inaktiv på en produktsida förbrukar en plats utan att kosta någonting.
- Sessionens längd är lika viktig som kapaciteten. Med 500 platser och 10-minuters sessioner du tar emot 3000 personer i timmen; halvera sessionen längd 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 shopping. Statiska tillgångar, hälsokontroller, ditt eget teams adresser, betalningsleverantörens callbacks. En kö som fångar din övervakning är en kö som blindar dig exakt när du behöver se.
Gör väntan uthärdlig
Köpsykologi är en verklig och välstuderad sak, och det kommer ner till ett resultat: osäkra väntan känns långt längre än kända. En kö där det står "du är nummer 1 240 av 4 100, ungefär sex minuter" upplevs som dramatiskt kortare än samma väntetid med en spinnare.
Vilket betyder att kösidan förtjänar mer eftertanke än den brukar få. Visa positionen och uppdatera den synligt, så att numret rör sig är bevis på att systemet fungerar. Ge en uppskattning och vara konservativ - en uppskattning som växer är mycket värre än en som krymper. Förklara kortfattat varför kön 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 steg bort inte bör förlora sin plats.
Vänd på väntrummet tidigare 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örsta en 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 på en gång. Besökare som anländer medan webbplatsen är under dess kapacitetsgräns passerar omedelbart; de som anländer när den är full hålls på en kösida som visar sin position och beräknad väntan och antas automatiskt 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 cachning, som hanterar det mycket vanligare fallet med många människor som begär samma innehåll. Det är för när tusentals människor samtidigt behöver dynamiska, per person operationer som kassan.
Hur bestämmer jag kapaciteten för ett väntrum?
Härleda 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öen rörlig, medan timeout fångar 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 onödigt låg. 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, dagen 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 värd - sedan han var 16. Han tog tidigt del i ett SaaS-företag och hjälpte till att växa fram till Vismas förvärv, 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.