Szökőmásodperc probléma okozott üzemzavart internetszerte a hétvégén

Címkék

Számos internetes szolgáltatás, weboldal - Reddit, Mozilla, Gawker - működésében okozott gondot egy szökőmásodperc-kezeléssel összefüggő bug. A problémáról beszámolók magas CPU terhelésről és egyéb problémákról számoltak be. A beszámolók Linux disztribúciók közül leginkább a Debian-t emlegették, mint a problémában érintett disztribúciót. Alkalmazások közül Java, MySQL, VirtualBox, IceWeasel, ... köhögött.

(Feltehetően) releváns linkek a témában:

Hozzászólások

A hétvégén nem voltam internetközelben. Akinek van linkje, pontosabb infója az esetről, lökje a kommentbe legyen szíves!

--
trey @ gépház

"A világon iszonytatóan sok olyan gadget van, ami belső órával, szökőévekkel, vagy akár a szökőmásodpercekkel is meg tud birkózni..." - zeller

:D

Valaki értelmesen le tudja írni, hogy konkrétan mi okozta a hibát?

-Olvastam, hogy az ntp beszúr egy másodpercet. Ezt is elmagyarázhatná valaki, mert én úgy gondoltam, hogy a kernel a másodperceket számolja, és az, hogy egy másodperc szökő vagy nem, az itt nem jelenik meg, csak ott, ahol egy libc függvény a másodpercek számát átkonvertálja emberek számára emészthető formára.

-Kiegészítő kérdés: ha az én gépemen nincs ntp, akkor a gépem nem fog tudni arról, hogy szökőmásodperc volt? Vagy az előtte pontos órája hirtelen 1 másodpercet sietni fog?

-Miért nem okoz ez gondot más esetekben, amikor mondjuk egy gépen nincs ntp, de most frissen feltelepítem, vagy reboot, vagy leszakad a netről, nincs szinkronban, aztán újra kap netet, stb.?

-Olvastam valamelyik linkelt cikkben, hogy futex timeout és ezért 100% processzorhasználat következett be bizonyos programokban (pl. java, tomcat, mysql). Ezt mi okozta?

-Máshol valaki azt írta, hogy csontrafagytak a gépek, se log se kerneldump. Ezt mi okozta?

-Debian-t és Redhat 6-ot említettek, azt írták, Redhat 5 nem volt érintett. Akkor ez azt jelenti, hogy valami disztribúció specifikus dolog volt elrontva, vagy ez hülyeség, és mondjuk x kernel verziótól x+y kernel (vagy más komponens) verzióig minden érintett volt?

Vannak kis garazscegek, ahol nem annyira fejlett a technika, mint nalatok :)

Sites such as Reddit, Gawker, LinkedIn, Foursquare and Yelp crashed after a "leap second" was added to the universal clock in order to keep up with the Earth's rotation.

The leap second is being blamed for a Qantas system meltdown yesterday that left thousands of passengers stranded around the country.

Meg ott van a Netflix, PInterest... Amazon ugy altalaban.

----------------------
while (!sleep) sheep++;

Attól még, hogy valami nem garázscég, lehet faszul megoldva bármi. A világ hahotázik évek óta, hogy nem garázscégeknél milyen advanced (nem) megoldásokat alkalmaznak.

Hadd ne idézzem a Sony biztonságát, a LinkedIn és a Microsoft India jelszókezelését és itt még sorolhatnám a világcégeket napestig ahol az elmúlt években kiderült, hogy dilettánsok dolgoznak.

Megj: a probléma létezését nem vonom kétségbe, csak arra kérlek, hogy ne azzal támaszd alá, hogy "de hát világcégek is megjárták, pedig ha ők nem, akkor ki?"...

--
trey @ gépház

Azt szerettem volna mondani, hogy az, hogy nalatok nem fordult elo, nem a ti hozzaerteseteken mulott (amit egyebkent cseppet sem vonok ketsegbe). Egy kernel-szintu race condition ellen az egyetlen vedekezes a szerencse. Az szivta meg, akinel modern kernel volt bekapcsolt NTP mellett. Nalunk pl. nem volt bekapcsolva az NTP, tuleltek a rendszerek (de nem a rendszergazda sracokon mult).

A problema sokkal kevesbe trivialis persze, mint az Azure bug volt, viszont joval tobb usert erint.

----------------------
while (!sleep) sheep++;

Ebben a leírásban:

21:49 < erikwb> this bug was a race condition in the printk about the leap
second being injected
21:49 < erikwb> the one we just had
21:50 < erikwb> put lock on time subsystem, increment, printk, remove lock
21:50 < erikwb> printk wakes up the kernel logging daemon
21:50 < erikwb> ... which asks what time it is

Mit jelent a leap second being injected? Hová, miért?

Egy bizotsag felevente eldonti mikor kell hoza adni vagy elveni 1 secet, az idobe kis ugrasokkal ilesztik be.
A Fold forgasa nem egyenletes, a halandok nem a cezium atom -ot nezik, hogy mi az 1 sec, hanem a fold forgasat. (Idiotak.)

Amit nem lehet megirni assemblyben, azt nem lehet megirni.

Hajnali öt óráig ültem a szerver előtt és néztem ahogy minden darabjaira hullik. A logokban semmi értelmes hibaüzenet nem volt, a gép napközben háromszor csontrafagyott, majd éjjel 12 körül szinte félóránként. Aztán 3 óra fele a raid nekifogott szinkronizalni (gőzöm sincs miért), de csak úgy tudta befejezni ha kirángattam a hálókábelt a gépből. Azóta gond nélkül üzemel és az elmúlt 2 évben semmi gond nem volt vele. Ubuntu server 10.04.4

A probléma oka: https://lkml.org/lkml/2012/7/1/203

A kernelben 2 idő között 1 mp eltérés adódik, és eközben az 1 mp-nél rövidebb timerek azonnal lejárnak, nincs várakozás, ezért van load. Egy kézi dátumállítás visszaállítja a szinkront, a patch is ezt javítja.

--
joco voltam szevasz