To je umirujući tekst u prodajnom levku, a ne tehnička garancija. Kada domaćin štampa „neograničeno“ na kartici plana, oni ne obećavaju beskonačan prenos u okviru fizike i budžeta; oni obećavaju da neće meriti jednu specifičnu stavku na vašem računu dok kontrolišu sve ostalo što zapravo upravlja time da li vaša stranica ostaje brza i dostupna. Praktična istina je jednostavna i pomalo iritantna: vaš plan možda neće meriti mesečni prenos, ali će vas apsolutno meriti na druge načine čim vaša upotreba izgleda neobično, naglo ili skupo za uslugu.
Gledao sam kako se ovo dešava dovoljno puta da prepoznam obrazac od prve podrške. Stranica počinje snažno, rangovi rastu, kampanja pogađa, a onda plan „neograničeno“ razvija ličnost. Zahtevi traju duže. Statička sredstva se vuku. Radnici se gomilaju. Greške se pojavljuju u džepovima jer domaćin počinje da štiti deljeno okruženje, a ne vaš uspeh. To nije zlonamernost; to je ekonomska stvarnost. Domaćini prodaju „neograničeno“ da privuku male sajtove čija je stvarna upotreba mala i predvidljiva. Izdvajanja—video, preuzimanja, javni API-ji, loše keširane aplikacije—postaju „zloupotreba“ u trenutku kada se grafikoni pomere. PoS i raspoređivači resursa stupaju na snagu. Ako ste kupili „neograničeno“ očekujući mogućnost skaliranja, osećaćete se iznenađeno. Ako to tretirate kao nemereno na papiru, ali vrlo mereno u praksi, donećete pametnije odluke o arhitekturi i izbeći e-mail o suspenziji koji uvek stiže u najmanje prikladno vreme.
Propusnost, prenos, protok i brzina porta nisu ista stvar
Ne zanima me koliko puta industrija zamagljuje termine—ako ćemo biti iskreni o tome šta zapravo možete da ostvarite, moramo razdvojiti vokabular. Propusnost je veličina cevi u određenom trenutku. Protok je ono što zapravo postižete kroz tu cev nakon troškova, suparništva i ograničavanja. Prenos podataka je ukupna količina prenesena tokom nekog perioda, obično mesec dana. Brzina porta je čvrsti plafon na trenutni protok, obično izražen kao 10 Mbps, 100 Mbps, 1 Gbps, ili više.
"Nemereno" je obećanje o naplati u vezi sa mesečnim prenosom, a ne o trenutnoj brzini koju vaši paketi dobijaju u podne u ponedeljak. "Neograničeno" je marketinški ukras koji implicira da nema ograničenja, ali ono što zapravo imate je plan koji ne broji gigabajte za prekoračenje dok sprovodi ograničenja kroz sve drugo: CPU delove, I/O, broj procesa, paralelizam konekcija i na kraju port koji vaši paketi moraju preći. Port od 1 Gbps može, teoretski, da prenese ogromnu količinu u mesec dana, ali ako domaćin oblikuje vaš port na 100 Mbps nakon pet minuta kontinuiranog protoka—ili vam jednostavno daje "eksplozivnu" traku koja se smanjuje pod opterećenjem—vaš teoretski prenos isparava u stvarno vreme čekanja i neuspele zahteve. Cev koju ste mislili da ste kupili je cev koju zauzimate samo kada ste tihi.
Kada pregledam plan, ne pitam "Da li je propusnost neograničena?" Pitam drugačije, ružnije pitanje: "Koji je najgori mogući trenutni protok koji mi je zagarantovan kada smo svi mi i komšije zauzeti?" To je broj koji sprečava da vaša kasa zastane, vaše slike puze i vaši pozadinski poslovi grade stazu ponovnih pokušaja za koje ćete kasnije platiti.
Kako je deljeni hosting projektovan da izgleda beskonačno (dok to nije)
Deljeni hosting je trik sa karnevala zasnovan na proseku. Većina sajtova je mala. Većina saobraćaja je povremena na prijateljski način. Većina stranica je keširana nakon prvog indeksa. Tako hostovi mogu da preopterete računar, memoriju, skladište I/O i mrežne trake dok i dalje pružaju vesele kontrolne table hiljadama klijenata. Mehanizam iza ove iluzije je gnezdo raspoređivača sa fer raspodelom i sistema kvota. CPU delovi sprečavaju jedan nalog da koristi punu jezgru dugo vremena. IOPS oblikovanje sprečava bučne susede da izgladne SAN. PHP-FPM i Node ograničenja procesa osiguravaju da samo nekoliko zahteva može dinamički da se izvrši odjednom. Plafoni inoda tiho ograničavaju broj fajlova koje možete zadržati na disku, gušeći sajtove sa mnogo medija pre nego što transfer uopšte bude prikazan na grafikonu.
Ključna stvar koju treba primetiti je da nijedan od ovih sistema ne dodiruje stavku "propusni opseg". To ostaje nemereno, tako da tvrdnja ostaje tehnički iskrena. U trenutku kada vaša aplikacija počne da izgleda zauzeto duže od trenutka, pravila fer raspodele primenjuju "tipičnu upotrebu" usporavanjem delova vašeg steka koje kontrolišu. Videćete da se dinamički zahtevi redaju dok statični resursi izgledaju u redu. Zatim se statični resursi usporavaju jer poreklo postaje usko grlo koje CDN ne može u potpunosti da maskira. Host vam i dalje ne naplaćuje transfer. Oni vas jednostavno teraju da ga koristite manje smanjenjem brzine kojom ga možete poslužiti.
Ne mislim da su deljeni hostovi zlikovci zbog ovoga. Model funkcioniše za veliku većinu sajtova i održao je veb jeftinim za male izdavače. Ali fraza "neograničeni propusni opseg" daje pogrešan mentalni model. Poziva vas da arhitekturu postavite kao da imate posvećenu traku, a nemate. Imate dozvolu da sipate vodu u kantu bez plaćanja po litru, ali i dalje delite slavinu.
Sitna slova koja zapravo upravljaju vašom upotrebom
Ako želite istinu, nemojte čitati tabelu cena; pročitajte Politiku prihvatljive upotrebe. Naći ćete šećerom obložene fraze poput "tipični sajtovi" i "fer upotreba," što se prevodi kao "ako počnete da izgledate kao čvor za deljenje fajlova, sajt za strimovanje, medijski ogledalo ili centar za preuzimanje, zadržavamo pravo da vas usporimo, premestimo ili suspendujemo." Pronaći ćete zabrane za audio i video strimovanje sa porekla, distribuciju datoteka u velikom obimu, rezervne arhive skladištene na veb prostoru, javno dostupne ZIP kolekcije i "resursno intenzivne" skripte koje traju više od nekoliko sekundi svaka. Naći ćete dnevne limite CPU sekundi, plafone upita baze podataka i brojanje konekcija koje čini da vaš omiljeni asinhron pretraživač izgleda kao napad.
Ograničenja ulaznog procesa su posebno podmukla. U okruženjima u stilu cPanel, "ulazni proces" često znači "broj istovremenih dinamičkih zahteva koji smeju da počnu." Ako pogodite taj plafon, sledeći posetilac se ne redi; dobijaju greške. I/O ograničenja i IOPS brojevi rade isto sa diskom. Ograničenja inoda vas isključuju kada imate "previše fajlova," što ambiciozne medijske biblioteke aktiviraju pre nego što dodirnu protok. Niti jedna od ovih stvari ne krši "neograničeni propusni opseg." Oni samo osiguravaju da koristite vrlo malo od toga kada vaš sajt počne da raste.
Izgubio sam broj planova koji tvrde "neograničeno" dok tiho postavljaju CPU na "100% jednog jezgra na nekoliko sekundi", I/O na "nekoliko megabajta po sekundi održano" i procese na "nekoliko odjednom." To je pojas, tregeri i uže. Ako pogodite sve tri, ne trčite; gegate se.
Kako izgleda "neograničeno" u užurban ponedeljak
Zamislite uobičajen ponedeljak nakon vikenda kada pominjanje na internetu privuče novu pažnju. Vaš HTML je prilično lagan, slike su pristojne, oslanjate se na CDN za statičke resurse, a vaš server obrađuje dinamičke delove. Saobraćaj se poveća za pet puta. U početku je sve u redu jer su keševi topli i CDN preuzima većinu zahteva za slike. Zatim vaši dinamički krajnji tačci počinju da zaostaju. Ograničenje procesa domaćina održava samo mali broj PHP ili Node radnika aktivnim. Počinje red čekanja, a vremena odgovora se razvlače dovoljno dugo da prekinu vremenske ograničenja između usluga. CDN još uvek pomaže, ali promašaji keša na HTML-u počinju da bole. Vaša baza podataka postaje pričljivija, a I/O planer oduzima još jedan deo jer sada postajete "resursno intenzivni". Vaši korisnici, sa savršenim tajmingom, klikću na slike koje nisu bile u vrućem kešu CDN-a, povlačeći izlive sa servera koji se sudaraju sa sporim dinamičkim radom.
Šta se dešava dalje zavisi od domaćina. Neki domaćini vas postepeno usporavaju dok performanse ne postanu toliko loše da posetioci odustanu i vaš "prosek" se vrati na normalu. Drugi aktiviraju automatska pravila zloupotrebe i premeštaju vaš nalog u niži nivo ili karantin VLAN. Nekoliko njih i dalje prikazuju klasičan odgovor 509, "Prekoračenje limita protoka," iako ne broje bajtove – 509 je samo koristan znak zaustavljanja da kupe vreme dok pregledaju. Ishod je identičan: obećanje "neograničenog" isparava tačno kada vam je najpotrebnije.
Sajt koji uglavnom služi keširani HTML i statičke resurse može da se provuče sa iritiranim posetiocima. Prodavnica sa puno korpa ili aplikacija sa puno pretraga će osetiti udarac. Bol se retko pojavljuje kao uredna, pojedinačna metrika. To je mozaik malih usporenja koja se sabiraju u neuspešne kupovine i rastuće napuštanje.
Pre nego što odemo dublje, želim da napravim nešto konkretno i ponovljivo kako biste mogli da vidite praktični plafon čak i kada plan tvrdi da ne postoji.
Preći ću na tvrde brojeve na nekoliko minuta. Ovo je Premium odeljak koji se fokusira isključivo na matematiku koju možete uraditi na salveti da prevedete brzinu porta u mesečni transfer, a zatim u prikaze stranica. Ako ste ikada imali problema da mapirate "1 Gbps neograničeno" u "Koliko poseta zapravo mogu da opslužim?" ovo je trenutak kada sve postaje jasno.
Premium content
Prijavite se da nastavite
Tihi ubice: CPU gušenje, IOPS oblikovanje i ograničenja procesa
Ako ste ikada osetili da sajt usporava dok grafici izgledaju "normalno," sreli ste se sa tihim ubicama. CPU gušenje je najvidljivije kada znate gde da gledate. Deljeni domaćini dodeljuju deo jezgra za iznenadne navale, a zatim vas smanjuju pod stalnim opterećenjem. Vaša aplikacija se ne ruši; ona se vuče. To je dovoljno da obori rangiranje u pretrazi i stope konverzije bez pokretanja alarma koji bi uključili podršku.
IOPS oblikovanje je suptilnije. Baze podataka žive i umiru od latencije skladišta. Aplikacije teške u fajlovima takođe. Domaćini koriste cgroups i skladišni QoS da spreče velike igrače da izgladne sistem. Ne vidite grešku; vidite kako čekanje diska od dvadeset milisekundi postaje osamdeset, što uvlači vreme zahteva u novu, ružniju distribuciju. Uparite to sa nisko ulaznim ograničenjem procesa i izgradili ste savršeni stisak. Zahtevi traju duže, pa je više zahteva istovremeno, što brže dostiže ograničenje, što odbacuje nove posetioce na pod.
Ograničenja procesa su, konačno, giljotina. Mnogi planovi ograničavaju PHP-FPM ili slično na nekoliko dece. Neki dodaju ograničenje na ukupne istovremene procese po korisniku. Obe omogućavaju domaćinu da se smeška i obećava "neograničen protok" dok se uverava da u praksi ne možete poslati mnogo. Ako ste ikada jurili fantomsko usko grlo na CDN-u ili u vašem aplikacionom kodu samo da biste otkrili da domaćin dozvoljava osam radnika i to je to, osetili ste zamku.
Ne stavljam "neograničen protok" u svoj registar rizika kao problem za rešavanje. Smanjujem svoju zavisnost od toga. Model koji radi za većinu malih i srednjih sajtova je dosadan i efikasan. Keširajte HTML na ivici što duže vaš sadržaj dozvoljava. Gurnite slike, CSS i JS na CDN koji zaista validirate u produkciji sa visokim stepenom pogodaka, ne samo logo. Prebacite teške medije na skladište objekata i usmerite svoj CDN tamo tako da izvor nikada ne vidi. Držite izvor fokusiranim na dinamička čitanja i upise koji zaista zahtevaju računanje, i napravite ih što bezdržavnijim i bržim.
Kada to uradite, plan "neograničen protok" postaje prihvatljiv jer ne tražite od njega da nosi teret koji ne može nositi bez drame. Čak i ako domaćin oblikuje vaš izvor, CDN apsorbuje slučajnu prirodu saobraćaja. Vaš p95 se stabilizuje, i kupujete vreme da odaberete potez kada rast postane stvaran umesto da reagujete tokom prekida. Svi sitni detalji i dalje postoje, ali ne koračate po njima. Izgradili ste mali, okretni izvor umesto skladišta.
Nikada ne stavljam strimovanje videa, preuzimanje fajlova, javna softverska ogledala ili distribuciju rezervnih kopija na plan koji kaže "neograničeno." Kažem to kao neko ko je pokušao da ih provuče i zatim pregovarao sa ToS jezikom nakon činjenice. Ova opterećenja nisu ono za šta je deljeni hosting napravljen, i domaćin će vas isključiti u ime zaštite svih ostalih. Čak i ako se izvučete s tim nakratko, jedan ste pomen daleko od stranica ljutitih emailova i migracije u ponoć.
Teški ZIP arhivi proizvoda ili obrazovnih materijala će pokrenuti iste alarme. Javne API-je koje podstiču klijentsko preslušavanje će takođe. I sve što podstiče korisnike da više puta preuzimaju isti višemegabajtni fajl na svežim vezama će pogoditi oblikovanje porta brže nego što mislite. Nit koja povezuje ove slučajeve je jednostavna: oni su opterećenja sa visokim izlazom, niskim računanjem koja napadaju tranzitni račun domaćina bez trošenja CPU ili I/O koji su njihovi planeri podešeni da mere. Ta neusklađenost je upravo razlog zašto "neograničen protok" postoji kao fraza. To je mekano obećanje napravljeno da se opozove onog trenutka kada vaša upotreba prestane da izgleda kao mali blog.
Želim da vam dam prevodilački vodič koji možete zadržati. Sledeći deo je Premium Sekcija gde prevodim najčešće klauzule koje domaćini koriste u operativnu stvarnost. Ako ne pročitate ništa drugo, pročitajte ovo kada pregledate plan u 1 ujutru i pitate se da li "neograničeno" će nositi vaš sledeći lansiranje.
Premium content
Prijavite se da nastavite
Praćenje onoga što je važno kako biste znali pre nego što stigne email o suspenziji
Kontrolna tabla koju vam domaćin daje neće vas upozoriti na nadolazeći kvar. Ona će prijaviti proseke i ukupne vrednosti dok se bol krije u dugom repu. Posmatram različite signale. Izlaz iz izvora naspram izlaza iz CDN-a mi govori da li keš obavlja svoj posao. Ako izlaz iz izvora raste brže od poseta, znam da se nešto zaobilazi ili previše agresivno čisti. Istovremena veza je kanarinac za ograničenja procesa; ako istovremene veze dosegnu ravnu granicu, očekujem trenutne greške za nove posetioce. Propusni opseg 95. percentila i vreme zahteva su važniji od proseka jer predviđaju delove dana kada će domaćin oblikovati vas i vaši korisnici neće uspeti da završe putovanje.
Vreme krađe CPU-a je test mirisa u zajedničkom okruženju. Ako vidim da krađa raste tokom mojih mirnih sati, znam da se takmičim sa susedima i da će moj nalet pasti na umoran čvor. Spore upite uvek vredi vremena koje mislite da nemate; ispravljanje jednog lošeg indeksa može biti razlika između preživljavanja pomena i celog dana izvinjavanja. Budžet grešaka—broj grešaka koje dozvoljavate u jednom prozoru pre nego što smatrate da je korisničko iskustvo degradirano—povezuje sve ovo zajedno. Ako vam greške porastu pre nego što to uradi saobraćaj, imate nevidljivo trenje, i "neograničeno" neće umanjiti ništa.
Pratite novac i priča prestaje da bude misterija. Tranzit je skup ako ne možete pregovarati dobre peering uslove i ako vaši korisnici sede daleko od vaših POP-ova. Deljeni hosting amortizuje taj trošak preko hiljada naloga od kojih većina jedva koristi bilo šta. "Neograničeno" je alat za privlačenje kupaca. Smanjuje trenje i dobro se upoređuje na tabeli gde je jeftiniji plan "uključuje" više. Domaćin pretpostavlja da ćete biti mali, ili da ćete učiniti razumno i premestiti svoj teški saobraćaj na CDN i objektno skladište čim rastete, što prebacuje izlaz na provajdera koji ne radi ništa osim izlaza.
Oblaci preokreću model. Oni mere izlaz jer je to njihov centar profita i zato što su njihove mreže skupe za održavanje na globalnom nivou. Oni ne obećavaju "neograničeno" jer je podsticaj drugačiji; žele da arhitekturu gradite pažljivo i plaćate ono što koristite. Deljeni domaćini žele da donesete svoj mali sajt i budete zadovoljni dok ne postanete veliki, u kom trenutku žele da ili optimizujete ili nadogradite. Ništa od ovoga nije cinično; to je način na koji se računi plaćaju. Ali objašnjava zašto su Uslovi korišćenja napisani u svilenkastom jeziku i zašto se tehnička ograničenja primenjuju blagim potezom dok se to ne promeni.
Tačke odluke: kada je "neograničeno" u redu, kada je neodgovorno i kako migrirati
Ne koristim "neograničeno" olako. Za mali marketinški sajt sa uglavnom statičnim stranicama i skromnim blogom, sasvim je u redu ako postavite CDN ispred njega. Za prodavnicu sa laganim saobraćajem i razumnim keširanjem, može funkcionisati dok pronalazite odgovarajuće mesto na tržištu. Za publikaciju koja ima nepredvidive skokove, rizično je osim ako agresivno ne keširate i unapred renderujete. Za bilo šta što emituje velike fajlove, to je pogrešan alat od dana kada ga pokrenete.
Moje drvo odluka je direktno. Ako je vaša p95 dinamička brzina odziva niska i ostaje niska pod laganim opterećenjem, možete koristiti deljeni plan duže nego što mislite. Ako je vaša CDN stopa pogodaka zaista visoka i vaš izvorni izlaz ostaje ravan kada se saobraćaj udvostruči, dovoljno ste sigurni. Ako bilo koji od tih uslova ne uspe, planirajte prelazak sada. Mali VPS sa dva vCPU-a i dovoljno memorije da izbegnete prebacivanje je dosadan i pouzdan. Pruža vam predvidivu konkurentnost, bolje performanse skladišta i mrežni kanal koji zaista možete razumeti. Još uvek možete koristiti istu strategiju CDN-a i objektnog skladišta. Kada prerastete to, osetićete to na način na koji možete instrumentovati i planirati, i preći ćete na posvećene ili upravljane klastere zato što to birate, a ne zato što vas je klauzula ToS-a naterala.
Put migracije ne mora biti dramatičan. Održavajte svoj izvor bez stanja gde je to moguće kako bi prebacivanje DNS-a bilo čisto. Skladištite sesije u zajedničkom pozadinskom sistemu na koji možete ukazati iz starih i novih izvora tokom kratkog preklapanja. Zagrejte keševe pre nego što prebacite prekidač kako novi izvor ne bi preuzeo ceo udar. Poenta nije biti savršen; već biti predvidiv. "Neograničeno" vas izneverava nepredvidivo. Vaš cilj je da prestanete biti iznenađeni.
Obećao sam praktične, životne scenarije jer se tako ivice ove teme postaju očigledne. Sledeći deo je Premium Sekcija sa tri stvarne priče, svaka počinjući sa "neograničenim," svaka pogađajući različit zid, i tačne promene koje su ih stabilizovale.
Premium content
Prijavite se da nastavite
Moj stav, iskreno: to je nenaplaćeno, ne neograničeno — tretirajte ga tako
Nemam ništa protiv "neograničenog protoka" sve dok se slažemo da to znači "nećemo brojati bajtove" i ništa više. To je nenaplaćeno, ne beskonačno. Kontrole koje oblikuju vaše iskustvo nalaze se u deljenju CPU-a, I/O ograničenjima, ograničenjima procesa, plafonima konkurencije i oblikovanju prolaznih portova kada postanete zauzeti. Ako projektujete kao odrasla osoba—CDN ispred, resursi prebačeni, dinamičan rad minimiziran i brz—možete srećno živeti na planu koji reklamira "neograničeno" jer retko trebate testirati to. Ako projektujete kao da ste kupili posvećenu traku, naučićete značenje "poštene upotrebe" prvi put kad nekog bude briga za vašu stranicu.
Evo kako ja funkcionišem. Tretiram poreklo kao mali API koji zaslužuje poštovanje. Premeštam teške bajtove na mesta napravljena za izlaz i plaćam za taj izlaz jer je to cena skaliranja. Pratim p95, ne proseke. Jedno oko držim na konkurenciji, a drugo na dugom repu vremena zahteva. Čitam uslove korišćenja kao da je tehnička dokumentacija i prevodim svaku eufemizam u broj. Prihvatam da je deljeni hosting prenatrpano okruženje sa briljantnom vrednosnom ponudom za male sajtove i nizom tvrdih ograničenja za bilo šta ambiciozno. Kada stigne ambicija, selim se jer ja to biram, a ne zato što mi neki skriveni uslov to nalaže.
Ako ste se opečeni na "neograničeno," ne krivite sebe. Frazeologija je zamišljena da bude umirujuća, i to funkcioniše. Izgradite malo, otporno poreklo. Stavite CDN ispred. Prebacite teške stvari. Poznajte svoje brojeve i uska grla. Kada dođe dan da vam treba VPS ili nešto veće, napravite potez sa toplom keš memorijom i hladnom glavom. Nikada više nećete gledati na "neograničeni protok" na isti način, i to je poenta. To nije bilo obećanje. To je bilo poziv da uradite pravi posao.