2010-06-24 19 views
15

A veces tenemos una gran cantidad de archivos JAR en el directorio jboss/server/web/tmp/vfs-nested.tmp.
Por ejemplo, hoy este directorio contenía más de 350k archivos jar.
Pero en otros hosts solo hay 2 archivos jar en este directorio.
¿Cuál puede ser la causa raíz de este problema?Gran cantidad de archivos JAR en el directorio jboss/server/web/tmp/vfs-nested.tmp

Utilizamos JBoss 5.1

ACTUALIZACIÓN:
encontré información siguiente en notas de la versión de JBoss 5.1.0.GA:

JBoss VFS proporciona un conjunto de diferentes interruptores para controlar es el comportamiento interno . JBoss AS establece jboss.vfs.forceCopy = true de manera predeterminada. Para ver todas las banderas de VFS proporcionados comprobar el código de la clase VFSUtils.java .

Así que no entiendo, ¿qué debo configurar?
¿Debo establecer -Djboss.vfs.forceNoCopy = true o -Djboss.vfs.forceCopy = false?
¿O debería configurar ambos?

ACTUALIZACIÓN 1:
He leído tema entero http://community.jboss.org/thread/2148?start=0&tstart=0 y ahora no estoy shure que debería cambiar ya sea jboss.vfs.forceCopy o jboss.vfs.forceNoCopy.
De acuerdo con este hilo tendré un error OutOfMemory en lugar de una gran cantidad de archivos en tmp dir.

+0

Tienen el mismo problema, así que estoy poniendo una recompensa en esta pregunta. – Gnoupi

+0

¿Alguna vez obtuvo una buena respuesta para esto? Tengo el mismo problema. Dos servidores idénticos (?), Uno lleno con archivos tmp, el otro aparentemente bien. Y creo que la creación de estos archivos cada minuto también está ralentizando el servidor. –

+2

@DanielWilliams También estamos teniendo este problema, y, aunque no hemos encontrado una manera de evitar que JBoss produzca estos archivos, hemos descubierto que podemos eliminar con seguridad los archivos más antiguos de esta carpeta mientras JBoss se ejecuta sin afectar la aplicación (s). El comando que usamos es 'buscar'. -ctime +1 -exec rm {} \; "desde el interior de la carpeta vfs-nested.tmp para eliminar archivos de más de 24 horas (YMMV). Estamos bastante seguros de que el problema está asociado con el uso de enlaces simbólicos para apuntar hacia nuestro implementables, tal vez en asociación con el uso de Twiddle para realizar nuestras implementaciones. ¡Consulte también los foros de JBoss! – Rich

Respuesta

3

A partir de aquí:.. http://sourceforge.net/project/shownotes.php?release_id=575410

"archivos nestedjarNNN.tmp excesivas en el directorio tmp El VFS desenvuelve frascos anidados mediante la extracción de la jarra anidada en un archivo tmp en el directorio java tmp Esto puede resultar en un gran número de archivos que llenan el directorio tmp. puede desactivar este comportamiento estableciendo -Djboss.vfs.forceNoCopy = true en la línea de comandos para iniciar JBoss. esto será activada de forma predeterminada en una versión futura, JBAS-4389 ".

+0

Nuestra aplicación funciona en diferentes hosts y sólo el 2 de nosotros tenemos este problema. ¿por qué no tiene este problema en todos los hosts? –

+0

por favor, véase la actualización. –

+0

El problema aquí es que forceNoCopy ha documentado el impacto en el consumo de memoria y en lugar de espacio fuera del disco obtienes OutOfMemoryError – Honza

1

jskaggz tiene una buena respuesta. Además, tengo esto en el comienzo de mi archivo run.bat:

rmdir /s /q c:\apps\jboss-5.1.0.ga\server\default\tmp 
rmdir /s /q c:\apps\jboss-5.1.0.ga\server\default\work 
rmdir /s /q c:\apps\jboss-5.1.0.ga\server\default\log 
mkdir  c:\apps\jboss-5.1.0.ga\server\default\tmp 
mkdir  c:\apps\jboss-5.1.0.ga\server\default\work 
mkdir  c:\apps\jboss-5.1.0.ga\server\default\log 
echo --- Cleared temp folders --- 

he tenido problemas con copias antiguas de clases dando vueltas, así que esto parece ayudar.

+0

Nuestra aplicación funciona en diferentes hosts y solo en 2 tenemos este problema. ¿Por qué no tenemos este problema en todos los hosts? –

+0

Por favor, mira la actualización. –

1

I tenían el mismo problema descrito anteriormente en la producción y resuelto con la siguiente solución.

opciones de Java Agregado

 
    -Djboss.vfs.cache=org.jboss.virtual.plugins.cache.IterableTimedVFSCache 
    -Djboss.vfs.cache.TimedPolicyCaching.lifetime=1440 

Mi configuración también define directorios de distribución adicionales, así que tenía que añadir estos directorios adicionales para vfs.xml archivo ubicado en $JBOSS_SERVER_HOME/conf/bootstrap/ con el fin de ver el beneficio.

El ajuste de tiempo de vida que pienso es en cuestión de minutos por lo que se establece en un día ya que tengo un reinicio programado del servidor durante la noche.

Antes de la búsqueda de esta solución que tenía también trató de usar -Djboss.vfs.forceNoCopy=true y -Djboss.vfs.forceCopy=false

Esto parecía funcionar, pero me di cuenta de la aplicación corrió mucho más lento - presumiblemente porque estos valores se convierten VFS almacenamiento en caché fuera.

Mi versión de Jboss es jboss-5.1.0.GA y mi aplicación se ejecuta en un clúster en producción.

0

encontrado una gran cantidad otros que tienen el mismo problema que se ejecuta en entornos de clúster (o de granja). https://issues.jboss.org/browse/JBAS-7126 Desribes para resolver el problema que tiene un directorio de granja de servidores como directorio de implementación.

Tuve el mismo problema al usar un segundo directorio de implementación. Los archivos jar de mis aplicaciones procedentes de este segundo directorio de implementación se copiaron hasta que el disco estuvo lleno.

Intentó agregar el segundo directorio de implementación de la misma manera que en https://issues.jboss.org/browse/JBAS-7126 descrito para el directorio de la granja de servidores.

funciona bien!

0

Estábamos enfrentando el mismo problema y pudimos eludir el problema utilizando un directorio de la granja de servidores como directorio de implementación.

Después de poner ese proceso en su lugar nos enfrentamos a un problema más debido a la naturaleza de nuestro entorno DEV (tenemos un entorno agrupado y tenemos muchos desarrolladores desplegados en el entorno DEV compartido) de no obtener resultados consistentes mientras estábamos implementando los EAR y WAR de esa manera. Hemos eludido el problema asegurándonos de que los EAR y JAR que se están implementando estén TOUCHED (http://en.wikipedia.org/wiki/Touch_(Unix)) en los servidores para garantizar que se eviten las incoherencias.

Cuestiones relacionadas