Skoková sekunda jako velký IT problém, hlavně na Linuxu

Pavel Kolář, 02. červenec 2012 08:00 11 komentářů
Skoková sekunda jako velký IT problém, hlavně na Linuxu

Jedním z největších IT problémů jsou překvapivě zdánlivé maličkosti, jako jsou drobné anomálie v počítání času. Vzpomínáte například na rok 2000? Nebo třeba na relativně nedávný výpadek Windows Azure od Microsoftu, který nezvládl datum 29. února univerzálního času a měl výpadek ve většině svých datacenter? Zdánlivě banální školácké chyby, ale tento víkend postihl stejný problém většinu linuxových systémů a na Internetu na chvíli způsobil menší chaos.

Jediná skoková sekunda jako opravdový problém? Absurdní, ale takový již náš svět občas bývá. Vteřina opravdu způsobila problém, který zasáhl linuxové servery a způsobil výpadky například velkých internetových služeb jako LinkedIn, FourSquare a webů jako Reddit, Mozilla, Gawker a mnohých dalších, protože Linux patří na Internetu k nejoblíbenějším platformám. Problémů ale bylo více, například zpoždění stovek letů australské letecké spoločnosti Qantas.

Problém 61 vteřiny

Problémy se v systému mohly projevit dvojím způsobem, prostým zamrznutím serveru, nebo rychlým vytížením CPÚ na 100 % a odmítnutím dalšího poskytování služby.

Kde se chyba vzala? První problém se skokovou vteřinou se v jádru Linuxu objevil po vydání verze 2.6.26 a obsahuje jej až verze 3.3. Chybu způsobuje samotná implementace přidání skokové vteřiny a projevuje se na systémech, které využívají pro synchronizaci času NTP (Network Time Protocol), což je protokol pro synchronizaci vnitřních hodin počítačů po síti s proměnným zpožděním. Aplikaci skokové vteřiny realizuje v Linuxu jádro systému, to automaticky na konci dne podle UTC času vrátí jednu vteřinu zpět. Když klient konfiguroval po informaci od NTP serveru v jádru příznak skokové vteřiny, nastal kolaps.

Chyba byla objevena v březnu a přestože se pro i objevil prakticky okamžitě patch, většina tvůrců linuxových distribucí nepovažovala za důležité opravu aplikovat.

Ale je zde ještě onen druhý problém, ten se začal objevovat (na vteřinu přesně :-)) po čase aplikování skokové vteřiny, tedy od půlnoci UTC času (2:00 našeho středoevropského času) a právě ten se pravděpodobně postaral o zhroucení řady internetových služeb. S problémem si totiž nevěděly rady různé aplikace napsané v Javě, MySQL a dalších prostředích a začaly neúměrně vytěžovat procesory až do 100% výkonu, po kterém následovalo přetížení, nedostupnost služeb a pády. Tento druhý problém je zatím dost tajemný, protože jeho přesná příčina se zatím nalézá pouze v rovině dohadů.

Proč vůbec přidáváme skokovou vteřinu

Samotné přidávání skokové vteřiny poprvé nastalo 31. prosince 2008. Smyslem tohoto časového „rituálu“ je kompenzace zpomalujícího se otáčení planety Země. Skokové sekundy se přidávají jako kompenzace rozdílu mezi skutečnou fází dne a času, který odměřuje člověk.

Děje se tak proto, že jedno otočení Země kolem své osy totiž trvá o něco déle, než je pověstných 24 hodin, které vycházejí ze sčítání fyzikálně přesně definovaných časových úseků – jedné vteřiny.

Řešení?

Jedním ze způsobů, jak se s problémem vypořádat lépe, než jako to dělá běžné NTP, je aplikace podobného řešení, jako zvolil pro letošek Google. Ten namísto přidání rovnou celé skokové vteřiny NTP servery nastavil tak, aby čas postupně v průběhu celého dne nenápadně zpomalovaly o milisekundy.


Komentáře

s #1
s 02. červenec 2012 08:56

Zpomalovani/zrychlovani casu o milisekundy a jine male jednotky se deje uz davno, od toho je preci ntpd aby nemenil cas skokove ale plynulym pribrzdovanim/zrychlovanim casu. Nebo se pletu?

Kubrt #2
Kubrt 02. červenec 2012 11:38

Je totální blbost, nebo mi něco uniká?
1. ke změně času přece při synchronizaci dochází zpomalováním/zrychlováním, ne skokově.
2. Pokud se uplatňuje posun o 1 sekundu (tedy se jedná o přestupnou minutu a ta má 61 případně 59 sekund a tedy 30.6 nebo 31.12), mělo by to být tak, že pokud se čas natahuje tedy má minuta 61 sekund, tak by měla poslední sekunda trvat 2 sekundy.
A platí, že čas nesmí jít zpátky, ale vždy jen do předu…
Ale jak by se jádro dozvědělo, že bylo naměřeno zpomalení(zrychlení) rotace země a je třeba uplatnit posun a samo tento posun provedlo (je napojeno na IERS)? - No nedozví se to, takže dojte zase k synchronizaci času zpomalováním/zrychlováním, takže kde je problém?

Sten #4
Sten 02. červenec 2012 20:33

Ve výchozím nastavení, pokud je rozdíl větší než čtvrt sekundy, provádí se změna skokově (lze to změnit, jak to udělal Google). A skok vzad je samozřejmě možný, děje se i třeba při změně letního času na zimní, proto by aplikace, které vyžadují monotónní hodiny, měly taky takové používat (CLOCK_MONOTONIC).

Kaacz #8
Kaacz 09. červenec 2012 00:55

No jedna pani povidala [neovereno], ze nejaky chytrak vymyslel v RFC hovadinu, ze se to udela takto:
..
23:59:58
23:59:59
23:59:60
00:00:00
..
Pry se nezdvoji posledni sec ale prida se dalsi, defakto neexistujici. Pry kvuli logum apod, kdy je dulezite zjistit, kdy presne se to stalo .. ale jak je videt, spousta aplikaci a demonu si s tou neexistujici vterinou neporadilo.

Ivan #9
Ivan 09. červenec 2012 15:37

Presne tak. Za urcitych okolnosti muze mit minuta 61 vterin. Kdo s tim nepocita, tomu spadne aplikace. Napriklad Oracle RAC clustery se kvuli tomu hromadne rebootovaly.

Sten #3
Sten 02. červenec 2012 20:30

Velice opatrný bych byl v tom, že to zasáhlo většinu linuxových systémů. Zasáhlo to totiž jenom těch pár, kde se na aktualizace admini vys*ali (Googlí přístup je IMO spíše kvůli lenosti jejich programátorů). Pokud by to zasáhlo většinu linuxových systémů, to by pravděpodobně neběžel Internet ještě ani teď ;-)

Honza Jaroš #5
Honza Jaroš 05. červenec 2012 11:39

No nevím, na svých debianových mašinách kontroluji aktualizace každou noc a případné opravy instaluju obvykle hned následující ráno, a přesto se mi tam Java zbláznila taky...

M. #10
M. 17. červenec 2012 10:39

Pak to není problém Linuxu, ale Javy. :-)

Honza Jaroš #11
Honza Jaroš 18. červenec 2012 23:51

No to jsem si nejdřív myslel taky. Problém je v tom, že to 100% vytížení procesoru pokračovalo i po shození a nahození příslušného procesu. A dokonce i po shození a nahození příslušného OpenVZ virtuálu. Pomohl až restart celého fyzického stroje (údajně by stačilo jen znovu ručně nastavit datum, ale to jsem zjistil až pak). Čili je otázka, jestli byla chyba v Javě, v systému, popřípadě v obou...

foxo #6
foxo 05. červenec 2012 12:01

wtf, CPÚ???

"Samotné přidávání skokové vteřiny poprvé nastalo 31. prosince 2008." Podľa wikipedie sa to deje už od roku 1972, tak ja neviem...

A čo je zlé na slove priestupný (rok/deň je v pohode, minúta/sekunda už nie?)?

G. #7
G. 07. červenec 2012 00:05

Kolega zrejme malo googlil a nepouzil zavedeny pojem prestupna vterina. Jinak aplikuje se nepravidelne, nicmene uz hodne dlouho.

RSS 

Komentujeme

Agilita a devops, přepracování a vyhoření

Pavel Houser , 12. červenec 2018 12:30
Pavel Houser

Michael Cote na The Register upozorňuje na častý problém: nové „agilní“ metody vývoje, všechny příst...

Více







RSS 

Zprávičky

Google dostal kvůli Androidu od EK rekordní pokutu 4,34 mld. eur

ČTK , 18. červenec 2018 13:26

Google využil Android k upevnění dominantní pozice svého internetového vyhledávače, uvádí EK....

Více 0 komentářů

EK oznámí rozhodnutí o pokutě pro Google

ČTK , 18. červenec 2018 12:10

Google dostal od EK za zneužití dominantního postavení již koncem loňského června pokutu 2,42 miliar...

Více 0 komentářů

Americká Workday koupila českou firmu Stories

ČTK , 18. červenec 2018 09:00

Českou firmu Stories založili tři datoví odborníci, kteří si dali za cíl změnit řízení velkých firem...

Více 0 komentářů

Kalendář

04. 08.

09. 08.
Black Hat USA 2018
09. 08.

12. 08.
DEF CON 26
06. 09.

07. 09.
Humusoft Technical Computing Camp 2018

Starší zprávičky

Slovensko zablokovalo přístup k desítkám webů s hazardními hrami

ČTK , 18. červenec 2018 08:00

Na návrh slovenského Finančního ředitelství soudy nařídily telekomunikačním operátorům zamezit příst...

Více 0 komentářů

Český startup CleverFarm buduje v Srbsku síť IoT

Pavel Houser , 17. červenec 2018 10:00

Český startup CleverFarm, který zavádí moderní technologie do zemědělství, pomáhá s budováním IoT sí...

Více 0 komentářů

Akcie Netflixu oslabily, Amazon a Disney konkurují

ČTK , 17. červenec 2018 09:36

Počet nových předplatitelů a tržby internetové televize Netflix zaostaly ve druhém čtvrtletí za oček...

Více 0 komentářů

Velitelství vojenských kybernetických sil by mohlo sídlit v Brně

ČTK , 17. červenec 2018 08:00

Vytvoření velitelství je naplánováno na začátek ledna 2019, od července pak vznikne výkonná část jed...

Více 0 komentářů