Pre neki dan je objavljen ne-tehnički i ne-stručni tekst, takoreći čist blogeraj jednog anonimnog programera koji je zborio o mukama sa velikom platom koji je iz nekog razloga ubio sa ludačkim interesovanjem zajednice – što je dovelo do ogromnog broja poseta te uz grešku na samom hostingu i lošeg tajminga objave – sve ode dođavola i server i sajt i sve.

Evo malo detalja, možda nekome pomognu u razumevanju grešaka sa njihovim serverima

Zašto je sajt puk’o na 2 sata?

Desilo se da je hosting provajder nekoliko mašina pod Windows Serverom i najverovatnije MSSQL bazama privremeno prebacio na isti fizički host gde se nalazio blogovljev (blogov, blogovski, jebem ga kako se kaže) VPS i tu su trebali da budu dan ili dva maks dok se ne prebace na server dedicated samo za njih. Te mašine ili neke od njih su u pola dana počele sa ludačkim upisivanjem i čitanjem po disku a disk je deljen sa svim VPS-ovima na tom hostu i zbog velikog broja tih I/O (Input/Output) operacija procesoru na mom VPS-u se desilo nešto što se zove – krađa procesorskog vremena.

%steal kolona – procenat CPU-a ukraden od strane drugih virtualnih mašina u vremenu kad je sajt postajao nedostupan. Dakle skoro 90% procesora nije bilo moje

Koliko se procenata procesora krade možete videti Linux komandom top, kolona st ili ako imate instaliran sysstat možete videti istorijski sve kao u fotki iznad, komandom: sar -u

Idealna vrednost za steal na VPS-u je nula. U ovom slučaju neko krade 0.1% procesora

Nisam ispratio pre objave tog ultra ćitanog teksta ovu vrednost, čak sam sličnu zajebanciju sa nekog drugog provajdera prijavio u jednoj od najboljih Facebook grupa namenjenoj toj hosting nauci Hosting Srbija.

Elem, 90% ukradenog CPU vremena koje nisam ispratio na sopstvenom VPS-u i baš ko u inat i baš kad ne treba, odobrih i objavih najčitaniji tekst na blogu izgleda – ikada (iako ni sam ne znam zašto je toliko interesantan svima), ogroman broj http zahteva na 10% procesora mučenog, load servera ode na koliko se sećam 200, VPS nedostupan i bilo ga je moguće samo restartovati kroz hosting panel.

Load ode na 120. Maksimalna vrednost za VPS sa 4 vCPU-a je 4, sve preko toga se konta kao ‘gužva u saobraćaju’. Ovo -1, -5 i -15 je opterećenje u poslednjih minut, 5 minuta i 15 minuta. (ovo je inače iz komande: sar -q)

Load servera – to je nešto što dosta ljudi ne konta baš najbolje, ali ukratko: ako je load veći od broja dodeljenih jezgara to veće sranje na sistemu.
Da objasnim u human-friendly formatu (ovo je inače default objašnjavanje loada svih sysadmina ljudima koji nisu sistemaši): Ako skontamo jedno CPU jezgo kao jednosmerni put sa jednom trakom (4 jezgra recimo put sa 4 trake itd), load 1 bi bio da je put pun ali se saobraćaj odbija normalno, load 2 bi bio da isti broj automobila pokušava da se priključi putu iz sporednih ulica i uključenja tako da će se saobraćaj i dalje odvijati ali usporeno jer će neko morati da propusti kola da se uključe (ili neće) – i dakle, saobraćaj će se odvijati i dalje ali gužva na Gazeli, 2 puta više automobila nego što jedna traka može da podnese, load 0.5 bi značio da na putu nema gužve i ima lufta za ubrzanje a load 0.1 bi značio da na putu tek poneki auto prođe ponekad. E, ja sam imao put sa 4 trake i 30 puta više automobila nego što su te 4 trake mogle da prime automobila – totalni kolaps saobraćaja, ni saobraćajna policija ne može da pomogne. Na load utiče – opterećenje procesora, memorije, aktivnost hard diska i mrežne kartice (I/O).

Srednja vrednost loada u poslednjih 1, 5 i 15 minuta

Naučena lekcija: Iako će me mnogi odmah napljuvati, ma šta bio zvaničan odgovor na pitanje „Šta je VPS“ – VPS zapravo samo napredniji shared hosting jer i dalje delite resurse sa drugim korisnicima (najkritičnija stavka disk). Provajderi inače primenjuju taktiku da postave I/O limit što je u neku ruku dobro – zbog ovih gorenavedenih razloga, a u neku i ne – jer kad ti zatreba nešto zahtevnije opet će se desiti problem za zabodom mašine jer ti je I/O limitiran.

Ako treba da budeš sam svoj serverski gazda onda uzimaj ili dedicated server ili nešto moćnije, skalabilnije i sa jačom infrastrukturom (IaaS) tipa AWS, Google Cloud i slično.
Elem, kako je hosting provajder suspendovao Windows mašine koje su gušile disk – sve proradilo ali problemi ostali jer…

Zašto sajt nije radio za neke korisnike skoro 3 dana posle pucanja iako je load sređen?

…dok se sve ovo dešavalo, rekoh „hajde da dok čekam provajdera d’ubije kradljivce CPU-a, ja ovo koknem na CDN i ugušim load koliko toliko, ništa me ne košta“ ionako blog nije korporativni ili mi donosi nekakav profit pa da se nešto stresiram, da ne radi i mesec dana ne bih se nešto potresao.

Otvorim ti ja nalog na CloudFlareu, dodam sajt, pustim propagaciju novih CloudFlare NS (Name Server) unosa, završilo se u roku od 5 minuta ali….ali kita – free plan CloudFlare CDN-a, sa postojećim SSL sertifikatom na sajtu se šiba, dolazi do greške pri pristupu sajtu a rešenje bi bilo prebacivanje sajta na http, pa postavljanje nekog free SSL sertifikata koje CloudFlare nudi i radi samo na nekim browserima – ali me mrzelo da se jebavam tim, pa vratih sve kao što je bilo tj vratim nazad NS unose kao što su i bili i par minuta posle suspenzije VPS-ova kradljivaca. Dakle od prebacivanja na CloudFlare NS pa do vraćanja na NameCheap NS koji sam koristio pre ove jebade – je bilo oko 20 minuta. Novi NS su postali živi posle 10-tak minuta, pristup sajtu je bio opet moguć. brz i najnormalniji, pogledam u Google Analitici u real time – poseta oko 600, a load oko 0.5 (8x manje opterećenje od dozvoljenog za 4 CPU jezgra)…

…ali samo za neke korisnike. Neki korisnici nisu mogli sajtu da pristupe ni posle 2 dana, ista greška. Iako je propagiranje default DNS rekorda prošlo skroz (proveravao na dnschecker.org) nekim korisnicima je kompjuteras.com i dalje bacao IP adresu CloudFlare-a (hvala Nikoli Iliću na proveri). Sve provere koje sam radio – bacale su da domen gađa ispravan server – ali su neki korisnici i dalje pristupali CloudFlare-u, zašto?

Problem su pravili lokalni DNS cache na samom laptopu i DNS cache kod naših internet provajdera. Onaj kome je DNS bio podešen recimo na Google (8.8.8.8 i 8.8.4.4) je sajtu pristupao normalno, onaj kome je DNS bio difotni od internet provajdera – imao je gorenavedenu grešku. Sajtu se pristupalo normalni i preko Tora i preko kproxy.com i mnogih ostalih javnih vebproxija koje sam proveravao. Nekim korisnicima kojima jeste bio podešen Google DNS i dalje se javljala greška – zašto? Jer je kompjuter vukao lokalni DNS cache. Tako rekoh gorepomenutom Nikoli da očisti lokalni DNS cache, kako je to uradio problema više nije bilo.

Inače lokalni DNS cache se na Windowsu čisti tako što se otvori command prompt (kao Administrator) i okine komanda: ipconfig /flushdns (nekao je potreban i restart browsera koji koristite). Na Linuxu, zavisi od distroa do distroa – na CentOS 7-ici je ako se ne varam: systemctl restart dnsmasq.service. Opcija „Zoljom ga zvekni“ jeste restart kompa. Lokalni DNS cache kod provajdera – na njega ne možete da utičete i on dok sam ne izlapi – džaba ti. Dakle – iako sam se sa promenom NS unosa, CloudFlareom i vraćanjem na staro zajebavao ukupno 30 minuta – zbog propagiranja DNS-a, i DNS cache unosa kod korisnika i internet provajdera problem je ostao naredna maksimalna 72 sata. Kontaktirao sam i NameCheap support vezan za ovaj problem i on je potvrdio isto – morate sačekati maksimum 72 sata da se propagiranje završi.

Naučena lekcija: Kad se igraš sa DNS rekordima – ako nisi siguran šta radiš (kao ja što nisam bio siguran za kombinaciju CloudFlare – postojeći SSL) – nemoj da radiš. Iako se poigraš na pola sata – problem možeš imati naredna 72 sata koliko maksimalno može trajati propagiranje tih unosa (mada obično potraje oko sat-dva-tri, ali eto – Marfi)

Ne veli džaba matori ljudi – na greškama se uči. Greške prave svi, neki ih javno istrtljaju, neki ih naprave pa kriju kako znaju i umeju, neki ih prave malo, neki ih prave mnogo. Greške su normalne (pogledaj obavezno ovaj gif o usponima i padovima). I najveći stručnjaci na planeti mogu napraviti grešku. Ja volim reći – „Jedina nepopravljiva i glupa greška koja te može koštati i iz koje ne možeš naučiti neku životnu lekciju je – da se ubiješ“ a ima i ona stara srpska poslovica koja kaže – shit happens. Jebiga, naučiš nešto iz svega i ćeraj dalje.