Portál AbcLinuxu, 12. května 2025 05:40

Dotaz: Java a vysoký sys load

Zdeněk Zámečník avatar 2.7.2012 13:29 Zdeněk Zámečník | skóre: 26
Java a vysoký sys load
Přečteno: 356×
Odpovědět | Admin
Zdravím, řeším velice nepříjemný problém. Udržuji několik serverů, na kterých běží různé aplikace v Jave. Nedávno jsem nasadil nový produkční server u kterého jsem přepokládal, že jeho výkonové rezervy vystačí na velmi dlouho dobu. Po dvou týdnech provozu jsem byl ale nemile překvapen. Některá vlákna Javy vytěžují procesor na 100%. Z toho jen 10% je v userspace.

Avg load se pohybuje mezi 50-60.

Disky jsou vytížené naprosto minimálně. Dle iostat 20-30 iops, což je na 8 diskovém RAID10 legrace.

Všechny javovské procesy se takto chovají bez rozdílu. Na ostatních produkčních serverech se tento neduh neprojevuje. Zkoušel jsem jak JDK6 tak JDK7 => žádná změna.

Mám tady stejný produkční server běžící na Scientific Linux 5.6 (~RedHat), kde vše běží bez problémů. Tento nový běží na Scientific Linux 6.1 a ohledně HW se liší pouze RAID řadičem - na starším běží SW raid, na novém je HW Areca včetně BBU.

Dokázal by mi někdo poradit, jakým se udat směrem?

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.7.2012 13:53 asdfasdf
Rozbalit Rozbalit vše Re: Java a vysoký sys load
Odpovědět | | Sbalit | Link | Blokovat | Admin
"leap second" bug? :)
Řešení 1× (xHire)
2.7.2012 14:00 xHire | skóre: 21 | blog: Linuxovník
Rozbalit Rozbalit vše Re: Java a vysoký sys load
Jo. :-)
Kryptoměny a bločenka.
Zdeněk Zámečník avatar 2.7.2012 14:04 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: Java a vysoký sys load
Díky, díky, díky!!

O přestupné sekundě jsem četl zrovna včera a zrovna tady, ale vůbec by mě nenapadlo, že by to bylo tím. Už to zase funguje jako dřív.
2.7.2012 14:30 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Java a vysoký sys load
Kéž by mně někdo vysvětlil k čemu vlastně dojde, a proč to něčemu vadí. Že má holt jedna minuta 61 sekund, no a co, to už tu párkrát bylo. Přece ke změně času dochází zrychlením a ne skokově, takže by systém neměl ani nic poznat.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
2.7.2012 15:06 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Java a vysoký sys load
Správně je naopak právě to, že se s rychlostí času nemanipuluje a přidá se ta jedna sekunda navíc. Já má v logu tohle:
Jul 01 01:59:59 [kernel] Clock: inserting leap second 23:59:60 UTC
Vysvětlení je v jednom z komentářů pod výše odkázaným příspěvkem – je to prý chyba linuxového jádra, kdy dojde k zacyklení některých systémových volání v okamžiku, kdy nastane přestupná sekunda. Jsou tam i další odkazy včetně odkaz na opravu jádra.
2.7.2012 16:02 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Java a vysoký sys load
Dík, já už něco četl, ale, přiznám se, že úplně nerozumím důsledkům ani tomu, která jádra jsou tímto problémem dotčena a jestli problém vyšumí, nebo-li žádný viditelný problém se nevyskytl, je lepší server(y) otočit?
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
2.7.2012 16:26 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Java a vysoký sys load
Problém nastal, pokud během té jedné kritické sekundy bylo aktivní příslušné systémové volání. Projevilo se to nekonečnou smyčkou, takže pokud nějaký proces nebere nezvykle mnoho procesorového času, problém se nevyskytl. A pokud se nevyskytl, není důvod k restartu. Pokud se problém vyskytl, stačí zastavit ntpd, změnit systémový čas (důležitá je změna, ne cílová hodnota, ale je dobré čas moc nerozházet, ať s tím pak ntpd nemá práci), a znovu spustit ntpd. Změnou času se ta nekonečná smyčka v jádru přeruší, takže není ani potřeba nic dělat s programem, který byl tou smyčkou postižen.

Chyba vznikla někdy v roce 2008, takže nejspíš tak staré jádro, aby chybou nebylo postižené, nemáte. Oprava by měla být snad v 3.4? Každopádně další přestupná sekunda může být nejdříve 31. 12. 2012, do té doby je potřeba nasadit jádro s opravou. I když podle komentáře k tomu patchi je to návrat k předchozímu kódu, který není ideální, tak je možné, že se to do té doby bude ještě někdo pokoušet opravit správně a rozbije to znova :-) Ale nedíval jsem se na to, jak přesně současný kód vypadá, zda se použil jenom tenhle patch nebo se to opravovalo nějak víc.
2.7.2012 17:33 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Java a vysoký sys load
Moc díky za vysvětlení toho co se stane, a i toho jak to napravit.
Já jsem to četl, ale asi se mi zauzlil EN modul a nějak jsem v nekonečné smyčce nechápal.Fčul už mi to dává i přen EN modul smysl :-).

Chyba vznikla někdy v roce 2008 - to jsem četl taky, ale prostě jsem nepobral, že se to od té doby nevyřešilo a ono fakt ne.
Věřím tomu, že to „někdo“ ještě vylepší :).

Kdy mohou nastat přestupné sekundy (2× do roka) vím, bo jsem na to v minulosti již narazil, když mi ta v roce 2008 rozhazovala sandál u dvou knihoven, tehdy jsem procitl, že ne každá minuta má 60sec.
Takže ještě jednou díky, už su v obraze…
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
2.7.2012 18:16 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Java a vysoký sys load
Chyba vznikla někdy v roce 2008 - to jsem četl taky, ale prostě jsem nepobral, že se to od té doby nevyřešilo a ono fakt ne.
No vyřešilo se to letos na jaře, kdyby všichni měli nejnovější jádro, asi by problém nenastal :-) Ono hlavně asi nikoho celou dobu nenapadlo, že by to mohl být problém, problémy se synchronizací vláken se hledají dost těžko, a když ten případ nastane jen při přidání přestupné sekundy, je to ještě podstatně horší. Osobně se divím, že si toho někdo všimnul dřív, než to nastalo.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.