Gli errori di esaurimento memoria in Tomcat possono verificarsi per varie ragioni. Ecco le cause da indagare e i metodi per risolvere tutte le difficoltà
Se usi Apache Tomcat, potresti andare incontro ad alcuni problemi di esaurimento della memoria dedicata all’application server, provocando così un crash dell’applicazione o del server a causa di quelli che vengono comunemente definiti Out Of Memory Errors (OOME).
In pratica, gli errori Out of Memory si verificano quando un’istanza di Tomcat utilizza tutta quanta la memoria ad esso riservata e, per quanto possa sembrare strano, questa difficoltà può avvenire non solo durate lo stadio sviluppo della Web app, ma anche sui server in produzione, ad esempio quando si verifica un inaspettato picco di traffico.
Tomcat possiede alcuni tool che consentono di risolvere parte delle cause degli errori di Out of Memory, ma nulla vale di più della comprensione del problema che ha portato al verificarsi dell’errore.
Così, è bene che tu applichi alcune procedure che ti consentano di evitare il verificarsi degli errori Out of Memory di Tomcat e dove tutto manca, puoi anche pensare di aumentare la memoria dedicata a Tomcat ricorrendo a un apposito servizio di Hosting Solutions. Ecco come.
Errori Tomcat, primo suggerimento
Per prima cosa, devi appurare che la tua applicazione chiuda tutti i thread che apre. Se ciò non avviene, Tomcat occuperà presto tutto il quantitativo di memoria a sua disposizione, portando così al verificarsi di uno dei tanti errori di out of memory.
Errori Tomcat, secondo suggerimento
Alcune applicazioni Web utilizzano delle classi personalizzate per caricare in memoria alcuni driver. Verifica sempre che questi driver vengano poi scaricati dalla memoria quando non più utili, in modo da non occuparne spazio inutile ed evitare così gli errori out of memory.
Errori Tomcat, terzo suggerimento
Anche se tecnicamente non necessario, è sempre bene assicurarsi di rilasciare tutte le risorse di memoria utilizzate da un qualsiasi framework di logging, quando non è più utile. Questa abitudine, ti mette al riparo dagli errori di out of memory che potresti riscontrare in Tomcat.
Errori Tomcat, quarto suggerimento
Se la tua applicazione Web usa un’API Java che punta al ContextClassLoader, potresti avere problemi di out of memory, ma al momento non c’è altra soluzione se non un approfondito test di compatibilità per assicurarti che l’uso del ContextClassLoader nella tua Web app non provochi errori Tomcat non desiderati.
Errori Tomcat, quinto suggerimento
Devi sempre imparare ad effettuare opportuni test della tua applicazione Tomcat con YourKit o con Eclipse Memory Analyzer. Una volta ottenuto un dump da questi ambienti di test, puoi verificare se il numero di istanze è maggiore del numero di applicazioni Web che hai avviato sul tuo server di test e se ciò avviene puoi dire con certezza di avere qualche problema di gestione della memoria che potrebbe portarti all’avvento di alcuni errori di out of memory.
Errori Tomcat, sesto suggerimento
Quando realizzi che nessuno dei problemi fino a ora suggeriti è coinvolto nel verificarsi degli errori Tomcat di out of memory, vuol dire che la tua Web application ha bisogno di più memoria di quanto ne sia già stata destinata. Anche in questo caso, non devi preoccuparti, perché Hosting Solutions ha pensato anche a questa eventualità e ti propone un’estensione di memoria aggiuntiva dedicata a Tomcat.
Il servizio ti permette di aggiungere ulteriori 128 GB di RAM da dedicare alla tua Java Virtual Machine. Questa memoria è riservata al tuo account, non viene condivisa con altri processi o applicazioni ed è sempre in RAM, per garantirti la massima velocità di esecuzione delle tue applicazioni Web Tomcat.