2012-01-03 23 views
6

Recentemente abbiamo iniziato a utilizzare New Relic per monitorare la nostra webapp di produzione ospitata nel server tomcat 7.0.6 ma abbiamo notato che l'ingombro di memoria di questo tomcat aumenta continuamente e in una settimana mangia tutto il server (AWS High-Memory Double Extra Memoria di grandi dimensioni) e non risponde, l'unico modo per riaverlo è riavviarlo. Forniamo Xms & argomenti Xmx all'avvio del tomcat ma entro poche ore l'utilizzo della memoria del processo tomcat incrocia il valore Xmx e continua ad aumentare fino a quando tutta la memoria del server non è terminata. Ecco il comando processo:Perché la nuova reliquia mangia molta memoria di tomcat?

/usr/java/jdk1.6.0_24//bin/java 
    -Djava.util.logging.config.file=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/conf/logging.properties 
    -Xms8192m 
    -Xmx8192m 
    -javaagent:/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/newrelic/newrelic.jar 
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
    -Duser.timezone=Asia/Calcutta 
    -Djava.endorsed.dirs=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/endorsed 
    -classpath /xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/bin/bootstrap.jar:/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/bin/tomcat-juli.jar 
    -Dcatalina.base=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6 
    -Dcatalina.home=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6 
    -Djava.io.tmpdir=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/temp org.apache.catalina.startup.Bootstrap start" 

Idealmente mi si aspetterebbe questo processo di non usare più di 8 GB di memoria, ma in poche ore si va sopra 10GB ed entro pochi giorni va sopra 20GB e tutto il resto su questo server soffre a causa di (Io uso 'top' per vedere l'utilizzo della memoria). Com'è possibile?

+0

Sono un ingegnere che lavora su Java Agent presso New Relic. Se lo desideri, puoi aprire un ticket di supporto per questo problema all'indirizzo [email protected] Quale versione di Java Agent stai usando? Inoltre, l'esplosione di memoria nella memoria di sistema o nella memoria heap? –

+0

Anche io ho questo problema, quindi non sei solo. Ho presentato una richiesta di supporto con newrelic questo fine settimana. Nel nostro caso, tomcat muore con un'eccezione OutOfMemory. – JBCP

+0

Succede anche a me –

risposta

1

Sto condividendo alcune ulteriori informazioni sull'incidente sopra riportato. la perdita di memoria non è nell'heap di Java. L'applicazione non raggiunge mai alcun errore di OUT OF MEMORY (8 gb è il limite massimo di heap Java che abbiamo impostato). Tuttavia, la memoria virtuale e residente continua ad aumentare fino al momento in cui la RAM esaurisce la memoria. Abbiamo confermato che questa perdita si verifica quando viene utilizzato l'agente reliquia. Versione: New Relic Agent v2.1.2

1

Ci scusiamo per il disturbo. Noi (New Relic) stiamo indagando sul problema, ma il primo suggerimento è di provare la versione 2.2.1 più recente di Java Agent che ha apportato sostanziali modifiche al modo in cui le classi di strumenti.

Seguirò qui quando avremo ulteriori informazioni.

+0

ci sono aggiornamenti su questo? –

+0

Abbiamo provato 2.2.1 e 2.3.1, sta ancora accadendo. – ThinkFloyd

+2

Ho riscontrato anche questo problema. E ho appena provato con 2.6 – ZacharyP

4

C'è un problema che riguarda qualsiasi JVM Sun/Oracle e si manifesterà come una crescita illimitata nella memoria non-heap (nativa). È disponibile una soluzione alternativa per le versioni degli agenti New Relic Java 2.16+ aggiungendo un ritardo di arresto alla trasformazione della classe nel file newrelic.yml nella sezione comune.

class_transformer: 
    shutdown_delay: 3600 

Dal changelog

work-around per Oracle JVM bug che in rari casi provoca una memoria nativa perdita

In rari casi, l'Oracle JVM può perdere la memoria nativa del sistema operativo (non heap spazio) quando le classi vengono intercettate dall'agente. Questa impostazione attiva dall'intercettazione delle classi caricate dopo il numero specificato di secondi. L'agente continuerà a monitorare le classi caricate prima di questa ora .

Problemi correlati