Vše funguje až do doby, než se objeví něco, co nikdo nemá rád. Chyba, crash, konec…

A to přesně bylo i u nás, koupil se dedikovaný server s Intel® Core™ i7–6700 Quad-Core Skylake, který dosahuje frekvence až 4GHz. Vše jsme nainstalovali, spustili. Vše naběhlo naprosto v pořádku až pak, když na serveru bylo 60 hráčů, kleslo TPS na minimum a do 4 minut byl server down.

TPS — Tics Per Second, vteřina v MC má 20 ticků, pokud tedy server má 10 TPS server je 50% pozadu než by měl být normálně.

Tehdy jsem si myslel, že jde o obyčejnou chybu a tak po zvolení “horšího” restartu server opět najel a fungoval. Uběhlo 15h a byla neděle 9.8.2017 když tu najednou, opět lagy a server down.

Byla to speciální chyba nefungovalo SSH (připojení na konzoli), daemon na propojení s webem, nefungovalo všechno. Proběhl tedy znovu restart avšak jakožto první pokus o opravení neznámé chyby byl updatován kernel na verzi 4.9, následně po dalším crashi na 4.10, 4.12, 4.13-pre6. Nic nepomohlo… po pár dnech vznikla na serveru panika, jelikož když docházelo ke crashi, tak se přibližně 10% hráčů smazal inventář.

No on se tak zcela nesmazal, jenom hráči něveděli o co jde -> koplo je to do lobby a tak se neúprosně rvali na server. Problém byl, že server je zaevidoval při startu a vytvořil nový .dat soubor a až se později, co server najel hráč připojil. Načetl se ten nový .dat jelikož přepsal ten starý.

Ovšem u updatu kernelu jsme nezůstali hledaly se různé chyby at už v dockeru, který ačkoliv měl prázný log nic nevykazoval se ale zadrhával místy. Nakonec po pár dnech tato chyba utichla.. server fungoval 3 dny bez crashe. Jenže… 15.8. se do toho opřelo vše co mohlo. Za celý den bylo přibližně 8x crash, hromady hráčů ztratili inventáře… doposud nikdo nevěděl, co dělá tu chybu. Rozhodlo se na čistý reinstall.. co myslíš? Pomohlo to? Ne nepomohlo… tehdy tam byl Ubuntu 16.04 LTS, reinstalovalo se znova na Ubuntu 16.04 LTS. Ovšem říkáš si, reinstalací se přece smažou všechny data.. ano. Takže, co mi zbývalo? Všechny soubory zazipovat do .tar a následně pomocí Amazon AWS je nahrát na náš S3 server (to je prostě neomezený uložiště). A takto každý další reinstall…

1_NcBn-f49oGiRXKiwCzMheA

Vše se reinstalovalo, pracně znova nainstalovalo nic se prakticky neupravovalo, pouze základní věci jako daemon, java. Zazipovaný Survival se stáhl z Amazonu, rozbalil, nastavily se práva, server se spustil. A já šel spát. Ráno jsem se vzbudil s tím, že je vše opraveno, ale když jsem se koukl na status Survivalu hlásil jen jedno velký červený slovo. ERROR.

Mnoho hráčů se nám snažilo pomoct, třeba takový Speedy11, který navrhl že by to mohl dělat starý hosting, jelikož nebudeme si lhát. Starý hosting má speciální verze Bungeecordů (Proxy), který podporují/nepodporují přidání cizí IP. No a my máme ty, co to nepodporují a měli jsme tam cizí IP. Teorie byla taková, že při připojení mnoho hráčů to prostě hosting nějakým packetem crashne. Bohužel to se nikdy neprokázalo!

Jedna z dalších teorií bylo zatížení na síť. To už bylo reálnější, jelikož nový server (dedikovaný Survival) byl v Frankfurtu v Německu, jenže základ serveru byl stále v Praze. Ačkoliv se mi tato verze zdála divná, jelikož do Ameriky v dnešní době ping je okolo 30ms, tak tato teorie ale stále byla.

Na základě těchto teorií jsme tedy odebrali všechny pluginy, které nějak navazují spojení s našimi proxy a naší hlavní MySQL databází. A hele ono to fungovalo, jenže… do doby než bylo na serveru 70 hráčů.

Ze zoufalství jsem si našel návod jak číst kernel logy. Tedy logy základního serveru… a začal hledat a našel jsem toto…

https://gist.github.com/MrWakeCZ/20b106c78b7e392de9bb25fb25ad92a8#file-kernel-log

Samozřejmě ta chyba je delší… zkrátil jsem jí na to hlavní. Jak vidíš, je tam kernel bug. Tak otázka zněla, jak mohl být kernel bug, když jsme měli jeden z nejnovějších kernelů? No a tak se začalo hledat, co to je e1000e a e1000.

Je síťová karta. Našli jsme si tedy ovladače, k našemu štěstí vyšli tehdy 12 dní před. Stáhli, vyextrahovali… a problém. Nepodporovaný kernel. Co teď? No požádali jsme o pomoct hosting. Ten provedl krátkou kontrolu a nezjistil nic. Tak provedli přes noc ještě větší kontrolu a opět nepřišli na nic a server stále crashoval s touto chybou.

Server za srpen byl reinstalován skoro 7x a to z Ubuntu 16.04 na Ubuntu 16.04, poté na Ubuntu 17.04. Když ani toto nepomohlo, tak na Debian 8 a následně na Debian 9 a nakonec Debian 9.1. Myslíš, že něco pomohlo? NE! Pořád ta samá chyba… a tak z posledních sil se nakonec povedlo nainstalovat nejnovější ovladače na sitovou kartu e1000e od Intelu. Vše fungovalo… až opět do doby 60 hráčů.

Tak a ted se nad tím zamysli, máš nahoře uvedenou chybu a pár chybných nesmyslů z logu. Co by to mohlo způsobovat? Co se zvětšuje v době, kdy tam je hodně hráčů. Ano zatížení, ale na síť. Tedy na tu e1000e.

A zde byl ten problém, po 28 dnech všemožných restartů, crashů, reinstalací, updatů, kontrol…. jsme na to přišli. Ověřil jsem to tím, že jsem nechal na plnou rychlost stáhnou 1TB soubor.. po 6 minutách server crashl.

Heh ale jak se toto vůbec může stát, no a tak se hledalo. Nakonec se přišlo na to, že hosting má konektivitu 1Gb/s a pokud na zde uvedené siťové kartě e1000e je větší datový tok jak 100Mb/s crashne. Linux jí pak automaticky restartuju (to způsobovalo lagy na serveru) a až se to opakovalo několikrát, tak crashl i linux. Odpojil se od sítě, jelikož nešla siťová karta. Nešlo se tedy proto připojit a jiné věci okolo. Nezbýval než tvrdý restart.

Tak jsme to tedy omezili na 100Mb/s. Jak trapný co? Platíš za 1Gb/s a musíš být omezený na 100Mb/s kvůli nějaký chybě Intel siťový karty. Všichni jsme prohlašovali server za opravený, jelikož 4 dny bez crashe byl rekord.

Jenže podle toho jak to píšu určitě poznáš, že to opět crashlo. Tehdy mi doopravdy došla trpělivost. Řekl jsem si jedno, konec s Intelem, konec…

AMD přichází, Intel odchází…

No a jelikož hosting nabízí ještě varianty s AMD Ryzen 5. Tak proč to nezkusit? Sice je to dražší ale.. když nás to osvobodí od Intelu, tak proč ne?

A tak se taky stalo… kladný přechod byl vidět již při instalaci. Vše bylo doslova 3x tak rychlejší. Vše bylo ihned, vše fungovalo jak má? Že by konečně také AMD udělalo pořádný procesory? No zřejmě je tomu tak…

Do dnes tedy server funguje již bez chyby a správně, žádné lagy, žádné problémy… kompletně tak jak má být vše i u Intelu.

1_1deA2bzfqqM2SkbnNnUrjw

Oprati původnímu jsme si značně vylepšili, jak jsem psal, vše je doslova 3x rychlejší.

Jistě si říkáš, jak se nakonec vyřešila ta chyba u Intelu? No povím ti jen jedno, zůstala tam kde zřejmě vždy pro mnoho lidí po internetu zůstala, v neznámém stínu.

Je až záhadné, že opět právě my jsme narazili na takto zajímavou chybu. Ovšem za tři roky co existuje server, jsem si už zvykl, že máme vždy nějaké extra chyby. Jenže doslova mě fascinuje, že od roku 2008, co se poprvé ukázala tato chyba se do dnes neopravila? To je spíš zklamání…

Co to ale znamená pro server? No tak zřejmě asi to, že server pojede kompletně na nejnovějích AMD Ryzen 5 1600x. Co jiného se dá dělat, šetřit nebudeme…. a hlavně né už Intel! :D

Pokračování ve 3. části…