Mi compañía ha estado ejecutando una prueba de Atlassian Crucible durante algunos meses. Para los repositorios donde funciona correctamente, los usuarios han brindado comentarios muy positivos sobre la herramienta. El problema que tengo es que tenemos varios proyectos diferentes, cada uno con su propio repositorio, y algunos de esos repositorios son muy grandes. Un repositorio en particular tiene una gran cantidad de ramas y probablemente alrededor de 9,000 archivos por rama. Explorar ese repositorio en Crucible es extremadamente lento.
Crucible se está ejecutando en una VM CentOS. La VM tiene 4 GB de RAM, y he establecido el máximo de Crucible en 3 GB, de los cuales actualmente usa 2 GB. Lo mencioné en un ticket de soporte con Atlassian, y sugirieron lo siguiente:
En particular, debido a que tiene un repositorio SVN bastante grande, probablemente encontrará que Fisheye creará un archivo de índice grande en el disco. Para ayudar a mejorar el rendimiento, algunas cosas que puedes probar son:
- Aumento de la memoria disponible disponible para Fisheye.
- Migrar a una base de datos externa .
- Excluyendo archivos y directorios de su índice que no son necesarios .
He intentado todas estas cosas hasta cierto punto, pero hasta ahora ninguna me ha ayudado mucho. Originalmente estaba ejecutando Crucible en una caja de Windows con 2GB de RAM usando el HSQL DB incorporado. Pasar a MySQL en CentOS experimentó un aumento en el rendimiento de algunos repositorios e hizo que Crucible fuera mucho más estable, pero no pareció ayudar mucho con nuestro repositorio más grande. Solo hay tantos archivos / ramas que puedo excluir de la indexación mientras mantengo la utilidad de la herramienta.
Siendo ese el caso, ¿alguien tiene algún consejo sobre cómo acelerar Crucible en repositorios grandes, sin invertir en hardware increíblemente poderoso?
¡Gracias!
Editar: para aclarar, ya que no lo mencioné explícitamente arriba, estoy usando FishEye.
Edición 2: desde que publiqué esto originalmente, el rendimiento ha mejorado un poco con los nuevos lanzamientos de Crucible, pero aún así no es excelente. Parece que este problema afecta a muchos usuarios , incluidos algunos con hardware mucho más potente que el que estamos utilizando. Por lo tanto, no creo que sea un problema de hardware, sino más bien un problema con ineficiencia inherente en Crucible. Atlassian es consciente del problema e incluirá más mejoras de rendimiento en futuras versiones, por lo que esperamos que esos cambios resuelvan nuestros problemas.
Edición 3: había olvidado cuánto tiempo atrás había hecho esta pregunta, por lo que en mi edición anterior no mencioné que nuestra situación de hardware también ha cambiado desde que se hizo originalmente. Ahora estamos ejecutando Crucible en un servidor físico dedicado, que todavía usa CentOS. El hardware sigue siendo modesto (4 GB de RAM, CPU de cuatro núcleos y discos duales de 500 GB en RAID 1 con respaldo externo), pero vimos un ligero aumento en el rendimiento cuando nos alejamos de la VM.
Respuestas:
Dado que la migración a MySQL marcó una diferencia notable para algunos repositorios, considere ajustar la base de datos para mejoras adicionales. Cambiar algunos
my.cnf
valores de los valores predeterminados puede hacer una gran diferencia. Consulte Conceptos básicos de optimización del rendimiento de InnoDB para obtener más información. También verifique si hay consultas lentas habilitando el registro de consultas lentas y agregue índices cuando corresponda.Mi próxima suposición sería la velocidad de la red: ¿está su instancia de Crucible en la misma red local cableada que sus repositorios SVN? También puede intentar darle a Crucible una ejecución de prueba en la misma máquina que su repositorio principal si es posible para eliminar la latencia de red como el culpable.
Y sé que puede ser difícil dependiendo de su entorno de trabajo, pero ejecutar Crucible en una VM probablemente no esté ayudando; Atlassian toma nota de esto en su muy breve página de Mejores prácticas para la configuración del crisol . Estoy seguro de que ya lo ha encontrado, pero también mencionaré la página Tuning FishEye para otros lectores.
También tengo problemas de rendimiento para proyectos grandes, pero atribuyo mucha lentitud a la interfaz web pesada de Crucible. Esto es especialmente cierto después de hacer clic un poco (las páginas vistas anteriormente en una revisión permanecen en la ventana del navegador, incluso cuando están ocultas). Nuestros desarrolladores han notado un ligero aumento de velocidad al cambiar a Google Chrome. Consulte también el Atlassian IDE Connector si existe un complemento compatible para su entorno de desarrollo. El conector Eclipse IDE tuvo sus propios problemas la última vez que lo usé (hace muchos meses), pero al menos podía manejar grandes conjuntos de archivos sin colgar.
Dependiendo de las prácticas de desarrollo de su empresa, podría dejar de escanear una gran cantidad de ramas de código (suponiendo que muchas de ellas ya no estén activas) y deshabilitar los repositorios para proyectos completados / muertos hasta que sean necesarios. Mi empresa utiliza equipos muy pequeños en una gran cantidad de proyectos, por lo que la mayoría de las veces trabajamos principalmente
trunk
, lo que hace que las sucursales sean la excepción; Por lo tanto, agregamos explícitamente ramas para escanear en lugar de incluir todas las ramas de forma predeterminada. También asegúrese de no escanear accidentalmente las etiquetas.¿Cómo es el uso de tu CPU en la caja Crucible? Si está utilizando SVN detrás de Apache HTTPD, examine cuántas conexiones consume Crucible durante una exploración de repositorio grande. Aparte de eso, no estoy seguro de qué más podría mirar (¿tal vez la velocidad del disco? ¿Frecuencia de exploración del repositorio?), Pero espero que los consejos anteriores le ayuden un poco.
fuente
> 4 G de RAM no son hardware "increíblemente poderoso". Suponiendo que tiene 25 usuarios y que está utilizando Fisheye (que usted menciona), está gastando $ 4400 solo en el software. $ 4k en Dell podría comprarle un servidor con 48G de RAM.
Además, ¿está utilizando una JVM de 64 bits? Los documentos sugieren que verá una mejor huella de memoria (como en menos) en una JVM de 32 bits.
fuente
top
,iostat
y todo lo demás, y mira qué duele.Aunque en realidad no lo he intentado, estoy experimentando exactamente los mismos síntomas que tú.
Actualmente estoy considerando desactivar la información de diferencias almacenada para los repositorios ofensivos. Hice la pregunta en el sitio de preguntas y respuestas de Atlassian y obtuve algunos consejos prometedores.
Mi problema es el mismo: la indexación no es el problema, es una gran huella de disco que se ejecuta en una matriz de discos de bajo rendimiento en una máquina virtual. Como no puedo actualizar el disco en este momento, necesito encontrar otra forma de evitarlo. El que responde en mi publicación anterior dice que eliminar la información de diferencias reducirá la huella del disco a expensas de perder la capacidad de buscar líneas agregadas / eliminadas . Aunque también sugiere que no afectará la velocidad de exploración de archivos con historiales largos.
Si alguien más ve esto y puede informar el éxito / fracaso con este interruptor, comente aquí.
Ah, y estoy ejecutando 2.7.13 con los mismos problemas de rendimiento.
fuente