2012-02-10 23 views
6

Por favor, ayúdenme con una situación. Tengo CentOS con 4 GB de RAM con Tomcat configurado con alrededor de 1500MB de memoria. En algunos puntos, mi máquina se cuelga cuando alcanza el máximo de subprocesos configurados en él, es decir, 200. Tenemos que reiniciar el servidor de aplicaciones para que funcione de nuevo. Los parametros son:Problemas de memoria JVM

JAVA_OPTS="-server -Xss128k -Xms2048m -Xmx2048m -XX:MaxPermSize=512m -XX:NewRatio=3 -XX:SurvivorRatio=6 -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:CMSInitiatingOccupancyFraction=80 -Dfile.encoding=UTF8" 

la JVM detalles mem se pegan a continuación. Montón

 PSYoungGen      total 435456K, used 73027K [0x00000000e0c00000, 0x00000000fb580000, 0x0000000100000000) 
  eden space 435200K, 16% used [0x00000000e0c00000,0x00000000e5350c70,0x00000000fb500000) 
  from space 256K, 0% used [0x00000000fb540000,0x00000000fb540000,0x00000000fb580000) 
  to   space 256K, 88% used [0x00000000fb500000,0x00000000fb538600,0x00000000fb540000) 
 PSOldGen        total 741376K, used 132680K [0x00000000a2400000, 0x00000000cf800000, 0x00000000e0c00000) 
  object space 741376K, 17% used [0x00000000a2400000,0x00000000aa592030,0x00000000cf800000) 
 PSPermGen       total 22912K, used 22880K [0x0000000092400000, 0x0000000093a60000, 0x00000000a2400000) 
  object space 22912K, 99% used [0x0000000092400000,0x0000000093a58088,0x0000000093a60000) 

Code Cache  [0x00002aaaab021000, 0x00002aaaab311000, 0x00002aaaae021000) 
 total_blobs=1033 nmethods=670 adapters=317 free_code_cache=47372736 largest_free_block=12096 

0x00002aaab41b7800 JavaThread ""http-apr-80"-exec-214" daemon [_thread_blocked, id=2636, stack(0x0000000043b06000,0x0000000043b27000)] 
+0

¿Existe un componente de programación para esta pregunta, o se trata simplemente de configurar Tomcat? – NPE

+0

También hemos comprobado los componentes que dependen de la programación. Analizó los objetos creados utilizando volcados de pila y jhat. No estoy seguro del tamaño de memoria definido y la sintonización de GC. Así que quería volver a consultarlo con otros. – Ashutosh

+0

Haz un volcado de hilo mientras está trabado para ver qué están haciendo. Probablemente haya algunos puntos muertos. Puede usar jconsole para recopilar esta información. – mrembisz

Respuesta

4

no creo que usted tiene un problema de memoria aquí.

creo que acaba de quedó sin hilos disponibles en la piscina rosca interna de Tomcat.
Tomcat ya no puede procesar solicitudes si su grupo interno de subprocesos de procesamiento de solicitudes no tiene subprocesos libres para hacer más trabajo y solo espera hasta que esta situación cambie (tal vez para siempre).

Mi conjetura es que al menos un servlet/JSP de una de sus aplicaciones web nunca se completa/vuelve.

Tome volcado de hilo para confirmar esto e identificar fácilmente la parte del software que causa esto.

Cuestiones relacionadas