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

Virtuální realitou proti strachu ze smrti

Pavel Houser , 18. červenec 2017 07:00
Pavel Houser

Lidé, kteří reportují „zážitky blízké smrti“, pak mnohdy mají ze smrti menší strach. Nedalo by se to...

Více






Kalendář

22. 07.

27. 07.
Black Hat 2017
27. 07.

30. 07.
Defcon 2017
27. 08.

31. 08.
VMworld 2017
RSS 

Zprávičky

Firmy se při přeshraničním prodeji přes Internet bojí podvodů

ČTK , 25. červenec 2017 16:27

Prodejci se obávají, že pokud lidé z jiného unijního státu za zboží nezaplatí, bude složité peníze v...

Více 0 komentářů

Zákazníci preferují biometrii, ale její zavádění je pomalé

Pavel Houser , 25. červenec 2017 12:50

Manažeři v bankách, kteří jsou zodpovědní za zavádění biometrie, připouštějí nedostatek zkušeností....

Více 1 komentářů

Malware Stantinko napadl více než půl milionu uživatelů ve východní Evropě

Pavel Houser , 25. červenec 2017 10:36

Těžce identifikovatelný nový kmen malwaru se šíří prostřednictvím dvou plug-inů pro prohlížeč Chrome...

Více 0 komentářů

Starší zprávičky

Čeští technici měli omylem přístup k tajným databázím Švédska

ČTK , 25. červenec 2017 10:23

Při předávce systémů švédský úřad nedodržel bezpečnostní postupy....

Více 1 komentářů

Zisk Googlu kvůli pokutě z EU klesl o 28 %

ČTK , 25. červenec 2017 10:16

Příjmy Googlu stouply o 20 % na 18,4 miliardy dolarů. Cena za proklik u Googlu klesla o 26 %. ...

Více 0 komentářů

Roboty využívá téměř čtvrtina českých menších firem

ČTK , 24. červenec 2017 10:00

Důvodem investic do robotizace nesmí být všeobecný trend, ale faktická potřeba. ...

Více 0 komentářů

Začne platit nový zákon, který má šetřit náklady na budování sítí

ČTK , 24. červenec 2017 09:00

Provozovatelé vodovodních, energetických i kanalizačních sítí budou muset umožnit přístup zájemců o ...

Více 1 komentářů