V praci resim nasledujici problem.
Zadani:
mame cca 40 PC, vetsina na linuxu (postupne se na nej migruje z XP) a na vsech bezi jedna java aplikace, ktera prochazi web a neco z nej stahuje. Cim vice instanci teto aplikace pobezi, tim lepe. Problem je, ze tato java aplikace je dost pametove i procesorove narocna, prumerna spotreba RAM jedne instance je cca 500MB, ale protoze nejaka pouzita knihovna ma problem s uvolnovanim pameti, obcas se stane (cca kazda desata) ze sezere veskerou pamet, kterou ma k dispozici. Pamet tedy omezujeme parametrem -Xmx a navic po pevne dane dobe aplikace skonci a spusti se znovu.
Me reseni:
Prvni, co jsem udelal, byl upgrade RAM na vsech strojich na 8GB (vice neumi) a instalace 64-bit OpenSuSE, vysledek vsak nebyl uspokojivy. XP s 3GB RAM dokazi bezet s 5 instacema, takto jsem se dostal na pouhych 9-10. Dalsim krokem byla instalace 32-bit JRE, vyledkem cehoz je, ze dokazu spustit 16 instanci zaroven, vyuziti swapu se prumerne pohybuje na cca 2-3GB a load je na cca 2-4, tedy je stale pouzitelny. Mimochodem nejen ze 32-bit JRE zere az o 60% mene RAM, ale zaroven ma byt i o ccaa 10-20% rychlejsi nez 64bit. Samozrejme jsem povypinal sluzby co to slo, nebezi tam ani Xka. Ma otazka zni: napada nekoho, co bych jeste mohl udelat pro maximalizaci poctu instanci one java aplikace? Samozrejme budeme hledat optimalni velikost -Xmx parametru, dulezite ale je abychom moc casto neskoncili s haskou OutOfMemory. Diky za jakekoli postrehy.