Äläpä käytä Hibernate connection poolia tai cachea!

Jepp, hibernatea kun pyörii vielä sellaisenaan tuotannossa reippaasti ja JPA:n mukana kylkiäisenä tullutta hibernatea lisääntyvissä määrin, hyvä muistutella että hibernaten oma dokumentaatiokin kehottaa olemaan käyttämättä hibernaten mukana toimitettavia cache ja connection pool kilkkeitä. Syynä se että ne ovat suorituskyvyltään, ominaisuuksiltaan ja toimintavarmuudeltaan lähinnä opiskeluun, harjoittelunn, prototypointiin käytettäviä helppoja defaultteja, mutta eivät tuotantoympäristöön riittäviä.

Mitäpä sitten pitäisi käyttää? Hyvämaineisia ovat esim. apache commons dbcp, ja c3p0 joiden piirteistä väännetään parrat päristen nettifoorumeilla. Uusi tulokas on Tomcat dbcp, joka tuli tomcat 7:n mukana, se on vielä toistaiseksi vähemmän tunnettu.

http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

Cachejen osalta ehcache löytyy usein tuotannosta, ja kun cachella on dramaattinen vaikutus suorituskykyyn, sen käyttöönotto kannattaakin tuunailla rauhassa toimivaksi testi edellä.

http://www.mchange.com/projects/c3p0/#hibernate-specific

http://commons.apache.org/dbcp/

Eli väärän cache/connection pool mallin käyttämisestä voi tulla mm. seuraavia seurauksia:

– muistivuotoja (no javassahan ei niitä ole mutta jos objektiin jättää viittauksen muistia ei myöskään  vapaudu, eli..)

– cacheen jää ikivanhaa dataa jota ei virkistetä

– pooliin jää rikkinäisiä yhteyksiä ja lopulta pool lakkaa toimimasta

– säätöjen puutteen vuoksi optimointivaraa ei ole, muistia käytetään liikaa tai ei tarpeeksi

 

P.S. ehcachessa on mielenkiintoinen lisäfeature joka on oletuksena päällä: Se soittelee kotipuoleen ja lähettää koneesta aikalailla tietoja. Meilläpäin tämmöisiä softia kutsuttiin haittaohjelmiksi tai viruksiksi, nykyään ne ovat laajalti käytettyjä apukirjastoja 😉 Reilua? Kenties, kenties ei, you make the call. No hätä ei kuitenkaan ole tämännäköinen, sen saa helposti pois päältä – ja kannattaapi ottaakin tuotannossa:

http://martijndashorst.com/blog/2011/02/21/ehcache-and-quartz-phone-home-during-startup/

Yksi syy lisää lukea manuaalit.