¿Cómo configuro "MaxPermSize" para que Atlassian Fisheye/Crucible se ejecute como servicio en Win2k3?

¿Cómo configuro "MaxPermSize" para que Atlassian Fisheye/Crucible se ejecute como servicio en Win2k3?

He estado intentando configurar Atlassian Fisheye/Crucible como servicio en Win 2K3 R2 durante dos semanas. Sigo recibiendo varios errores "java.lang.OutOfMemoryError: PermGen space", que bloquean Fisheye y me obligan a reiniciar el servicio.

He seguido elejemploen el sitio de soporte de Atlassian para configurar MaxPermSize dentro del contenedor de servicios. Sin embargo, cuando reviso SysInfo dentro de las páginas de Fisheye Admin y el registro de depuración, no veo ninguna confirmación. La información del montón de Java está en ambos lugares, por lo que esperaría que la configuración MaxPermSize aparezca en ambos lugares.

El error persiste y el soporte de Atlassian ha sido de poca ayuda.

Agradezco cualquier ayuda.

Respuesta1

Puede configurar esto en su archivo Wrapper.conf. Aquí está mi archivo de configuración y está funcionando muy bien para mí. Lo estoy usando con Fisheye 2.6.3 ejecutándose en Windows Server 2008 R2. Este archivo es prácticamente idéntico a la configuración de muestra/predeterminada, con algunas adiciones importantes que comentaré al final.

#*************************************************** *******************
# Propiedades del contenedor
#*************************************************** *******************
# Directorio de trabajo
wrapper.working.dir=../../

# Aplicación Java
wrapper.java.command=C:\Program Files\Java\jdk1.6.0_25\bin\java.exe

# Clase principal de Java. Esta clase debe implementar la interfaz WrapperListener
# o garantizar que la clase WrapperManager esté inicializada. Ayudante
Se proporcionan # clases para hacer esto por usted. Ver la sección de Integración
# de la documentación para más detalles.
wrapper.java.mainclass=com.cenqua.fisheye.FisheyeServiceWrapper

# Java Classpath (incluye wrapper.jar) Agregar elementos de ruta de clase como
# necesario a partir de 1 (agregue lib PRIMERO para que la configuración de log4j se cargue primero)
wrapper.java.classpath.1=./fisheyeboot.jar
wrapper.java.classpath.2=wrapper/lib/*.jar

# Ruta de la biblioteca Java (ubicación de Wrapper.DLL o libwrapper.so)
wrapper.java.library.path.1=wrapper/lib
wrapper.java.library.path.2=lib/native/linux-i386
wrapper.java.library.path.3=lib/native/osx-ppc
wrapper.java.library.path.4=lib/native/solaris-sparc
wrapper.java.library.path.5=lib/native/win32-x86


# Parámetros adicionales de Java
wrapper.java.additional.1=-servidor
wrapper.java.additional.2=-showversion
wrapper.java.additional.3=-Djava.awt.headless=true

# JDK 1.5 Parámetros adicionales para jmx
wrapper.java.additional.4=-Dcom.sun.management.jmxremote
wrapper.java.additional.5=-Dcom.sun.management.jmxremote.port=4242
wrapper.java.additional.6=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.password.file=./wrapper/jmxremote.password
wrapper.java.additional.10=-Dwrapper.mbean.name="wrapper:type=Control de contenedor de servicio Java"
wrapper.java.additional.11=-Dfisheye.inst="C:\Atlassian\fecru-2.6.3\bin\.."
wrapper.java.additional.12=-XX:MaxPermSize=256m
wrapper.java.additional.13=-Xrs
wrapper.java.additional.14=-Dfile.encoding=UTF-8


# Tamaño inicial del montón de Java (en MB)
contenedor.java.initmemory=64

# Tamaño máximo del montón de Java (en MB)
contenedor.java.maxmemory=1024

# Parámetros de la aplicación. Agregue parámetros según sea necesario a partir de 1
# El primer parámetro de la aplicación es el nombre de la clase cuyo principal
# método debe llamarse cuando se inicia la aplicación. La clase
# nombre va seguido del número de parámetros que se pasarán a su principal
# método. Luego vienen los parámetros reales.

wrapper.app.parameter.1=com.cenqua.fisheye.FishEyeCtl
envoltura.aplicación.parámetro.2=1
wrapper.app.parameter.3=iniciar

# Los parámetros de inicio van seguidos del nombre de la clase cuyo principal
Se llamará # método para detener la aplicación. El nombre de la clase de parada
# va seguido de una bandera que controla si el Wrapper debe o no
# esperar a que se completen todos los subprocesos que no son demonios antes de salir de la JVM.
# La bandera va seguida del número de parámetros que se pasarán al
# detener el método principal de la clase. Finalmente vienen los parámetros reales.
wrapper.app.parameter.4=com.cenqua.fisheye.FishEyeCtl
wrapper.app.parameter.5=verdadero
envoltura.aplicación.parámetro.6=1
wrapper.app.parameter.7=detener

#*************************************************** *******************
# Propiedades de registro de contenedor
#*************************************************** *******************
# Formato de salida para la consola. (Ver documentos para formatos)
wrapper.console.format=M

# Nivel de registro para la salida de la consola. (Consulte los documentos para conocer los niveles de registro)
wrapper.console.loglevel=INFORMACIÓN

# Archivo de registro que se utilizará para el registro de salida del contenedor.
wrapper.logfile=var/log/wrapper.log

# Formato de salida del archivo de registro. (Ver documentos para formatos)
wrapper.logfile.format=LPTM

# Nivel de registro para la salida del archivo de registro. (Consulte los documentos para conocer los niveles de registro)
wrapper.logfile.loglevel=INFORMACIÓN

# Tamaño máximo al que se permitirá que crezca el archivo de registro antes
# se enrolla el tronco. El tamaño se especifica en bytes. El valor predeterminado
# de 0, deshabilita el avance de registros. Puede abreviarse con la 'k' (kb) o
# sufijo 'm' (mb). Por ejemplo: 10m = 10 megas.
wrapper.logfile.maxsize=50m

# Número máximo de archivos de registro enrollados que se permitirán antes de los antiguos
Se eliminan # archivos. El valor predeterminado de 0 implica que no hay límite.
envoltura.logfile.maxfiles=10

# Nivel de registro para la salida del registro de eventos/sistema. (Consulte los documentos para conocer los niveles de registro)
wrapper.syslog.loglevel=NINGUNO

#*************************************************** *******************
# Propiedades de Windows contenedor
#*************************************************** *******************
# Título a usar cuando se ejecuta como consola
wrapper.console.title=Ojo de pez

#*************************************************** *******************
# Propiedades del servicio Wrapper Windows NT/2000/XP
#*************************************************** *******************
# ADVERTENCIA: no modifique ninguna de estas propiedades cuando una aplicación
# el uso de este archivo de configuración se ha instalado como un servicio.
# Desinstale el servicio antes de modificar esta sección. El
Luego se puede reinstalar # servicio.

# Nombre del servicio
wrapper.ntservice.name=Ojo de pez

# Nombre para mostrar del servicio
wrapper.ntservice.displayname=Ojo de pez

# Descripción del servicio
wrapper.ntservice.description=Ojo de pez

# Dependencias del servicio. Agregue dependencias según sea necesario a partir de 1
wrapper.ntservice.dependencia.1=

# Modo en el que se instala el servicio. AUTO_START o DEMAND_START
wrapper.ntservice.starttype=AUTO_START

# Permitir que el servicio interactúe con el escritorio.
wrapper.ntservice.interactive=falso

Líneas destacadas

wrapper.java.command=C:\Program Files\Java\jdk1.6.0_25\bin\java.exe

Ruta completa al ejecutable del servidor JDK 'hotspot'. Tenga en cuenta que descargue el JDK completo, no solo el JRE.

wrapper.java.additional.11=-Dfisheye.inst="C:\Atlassian\fecru-2.6.3\bin.."
wrapper.java.additional.12=-XX:MaxPermSize=256m
wrapper.java.additional.13 =-Xrs
wrapper.java.additional.14=-Dfile.encoding=UTF-8

Ninguno de los anteriores se muestra en la documentación de Atlassian; los he agregado con el tiempo mediante prueba y error. Cuando FeCru se inicia por primera vez bajo el contenedor de servicios, puede detenerse con un error de falta de memoria; la línea 'MaxPermSize' lo soluciona.

También descubrí que es necesario especificar FISHEYE_INST como se muestra arriba. No tengo idea de por qué la ruta se especifica /..al final, era así en el ejemplo que encontré. Algún ritual de cocina de Linux, sin duda. Las otras líneas, no recuerdo para qué servían, pero las agregué por alguna razón u otra y no documenté por qué. Nadie es perfecto ;-)

wrapper.java.initmemory=64 wrapper.java.maxmemory=1024

Las asignaciones de memoria dinámica aumentaron con respecto a las predeterminadas: indexo algunos repositorios bastante sustanciosos y podría permitirme los recursos adicionales; es posible que se salga con la suya con las asignaciones más pequeñas predeterminadas.

información relacionada