margin-top: 125px; border: 1px solid gray; } -->

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

Chatbot mluví za mrtvého – od nápadu k realizaci

Pavel Houser , 30. listopad 2016 13:00
Pavel Houser

Na webu The Verge popsala Casey Newton příběh dvou přátel (Eugenia Kuyda a Roman Mazurenko). Peripet...

Více





Kalendář


RSS 

Zprávičky

CETIN vydal dluhopisy za 25 miliard Kč

ČTK , 05. prosinec 2016 18:00

Česká telekomunikační infrastruktura (CETIN) upsala dluhopisy v eurech a korunách v celkovém objemu ...

Více 0 komentářů

Nahradí otisky prstů přístupová hesla?

ČTK , 05. prosinec 2016 14:30

Zní to jako skvělý nápad: zapomeňte na hesla a zamykejte telefon místo nich otiskem svého prstu. Je ...

Více 1 komentářů

Počítač a internet má na jižní Moravě více než 75 pct domácností

ČTK , 05. prosinec 2016 10:30

Počet jihomoravských domácností, které mají počítač a přístup k internetu, se loni přehoupl na jižní...

Více 0 komentářů

Starší zprávičky

Vodafone zvýšil do září počet zákazníků na 3,54 milionu

ČTK , 04. prosinec 2016 18:00

Mobilní operátor Vodafone zvýšil do konce září počet zákazníků na českém trhu meziročně o 146.000 na...

Více 0 komentářů

Nový škodlivý program ukradl údaje k milionu účtů Google

ČTK , 02. prosinec 2016 14:00

Nový škodlivý program Goolian narušil bezpečnost více než jednoho milionu účtů Google. Šíří se na za...

Více 1 komentářů

Telefony Nokia se příští rok vrátí na trh

ČTK , 02. prosinec 2016 10:30

Chytré telefony se značkou Nokia se objeví zpátky na trhu v příštím roce. Finská společnost Nokia dn...

Více 2 komentářů

CETIN nabídne příští rok operátorům připojení až 250 Mbit/s

ČTK , 01. prosinec 2016 17:00

Společnost Česká telekomunikační infrastruktura (CETIN) zvýší od května příštího roku rychlost inter...

Více 0 komentářů