Žere vám java procesorový čas serveru i když nic nedělá?

Instaluji na serveru Gerrit a narazil jsem na problém, že nicnedělající java konzumovala 400% CPU času. Ne že by to server nezvládal, ale je to prostě fuj.

Poštval jsem na javu strace a vybaflo na mě samé volání:

futex(0x7fa77800f028, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x7fa77800f054, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1352752851, 613187000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)

Trošku jsem hledal na google a narazil jsem na zajímavý zápisek, který toto zrovna řeší. Jedná se o problém v jádře. Na daném stroji je trošku starší jádro, takže než bude možné provést upgrade opravu zařídil následující postup:

/etc/init.d/ntp stop
date `date +"%m%d%H%M%C%y.%S"`
/etc/init.d/ntp start

Hned po spuštění výše uvedeného přestala java zběsile žrát CPU a zároveň přestal to samé dělat i Passenger, který žral jen 40% jádra a nějak jsem nevěděl proč (a bylo to dost málo na to abych se nějak znepokojoval).

Řeknete si nic nového, kdybys aktualizoval pravidelně, tak to nemusíš řešit. Jenže pravidelné aktualizace jádra jsou v některých případech problém a prostě musí chvilku počkat…