Pregunta

Hemos utilizado cae la baba como parte de una solución a actuar como una especie de filtro en una muy intensa aplicación de procesamiento, tal vez corriendo hasta 100 reglas de 500,000 + memoria de trabajo de los objetos.resulta que es extremadamente lento.alguien tiene alguna experiencia en el uso de cae la baba en un lote de procesamiento de tipo de aplicación?

¿Fue útil?

Solución

No he trabajado con la versión más reciente de cae la baba (la última vez que lo usé fue hace aproximadamente un año), pero de nuevo, a continuación, nuestra alta carga de puntos de referencia resultó ser absolutamente lento.Una gran decepción después de haber basa gran parte de nuestra arquitectura en él.

Al menos algo bueno que recordar acerca cae la baba, es que su equipo de desarrollo estaba disponible en el IRC y muy útil, podría darles una oportunidad, ellos son los expertos, después de todo: irc.codehaus.org #cae la baba

Otros consejos

Depende de las reglas - 500K de los objetos que es razonable dado suficiente memoria (tiene que rellenar una ARAÑA de la red en la memoria, por lo que el uso de la memoria es un múltiplo de 500K de los objetos - es decir, el espacio para los objetos + espacio para la estructura de la red, índices, etc) - es posible que se paginación en el disco que sería muy lento.

Por supuesto, si usted tiene reglas que coinciden con las combinaciones del mismo tipo, de hecho, que puede causar una explosión de combinaciones a probar, lo que incluso si usted tiene 1 regla va a ser muy muy lento.Si tenía más información sobre el análisis que está haciendo que probablemente ayude con las posibles soluciones.

He usado un cae la baba con un estado de la memoria de trabajo contiene más de 1M hechos.Con algunos ajustes, tanto de sus reglas y la base de la JVM, el rendimiento puede ser muy bueno después de un par de minutos para que arranque inicial.Déjeme saber si usted desea más detalles.

Estoy aprendiendo cae la baba a mí, así que tal vez me estoy perdiendo algo, pero ¿por qué es todo el lote de quinientos mil objetos agregados a la memoria de trabajo a la vez?La única razón que se me ocurre es que hay reglas que se activan sólo cuando dos o más elementos en el lote están relacionados.

Si ese no es el caso, entonces tal vez usted podría utilizar un apátrida sesión y hacer valer un objeto en un momento.Asumo que se ejecutarán las reglas de 500k veces más rápido en ese caso.

Incluso si es el caso, no todas las reglas necesitan tener acceso a todos los 500k de los objetos?Podría acelerar las cosas mediante la aplicación de cada elemento de las reglas de una en una y, a continuación, en una segunda fase de procesamiento aplicar lote a nivel de las reglas de uso de diferentes bases de reglas y la memoria de trabajo?Esto no cambiaría el volumen de datos, pero la ARAÑA de la red sería menor debido a que las reglas simples que habría sido eliminado.

Un enfoque alternativo sería intentar identificar los grupos de objetos relacionados y hacer valer los objetos en grupos durante la segunda fase, reduciendo aún más el volumen de los datos en la memoria de trabajo, así como la división de la ARAÑA de la red.

Cae la baba no está realmente diseñado para ejecutarse en un gran número de objetos.Es optimizado para la ejecución de reglas complejas en un par de objetos.

La memoria de trabajo de inicialización para cada objeto adicional es demasiado lento y el almacenamiento en caché de las estrategias están diseñadas para trabajar por la memoria de trabajo objeto.

He tenido problemas con OutOfMemory errores después de analizar un par de miles de objetos.La configuración por defecto optimizador resuelto el problema.

OptimizerFactory.setDefaultOptimizer(OptimizerFactory.SAFE_REFLECTIVE);

Nos quedamos mirando cae la baba, pero para nosotros el número de objetos es tan bajo, así que esto no es un problema.Me hacer recordar la lectura de la que hay versiones alternativas de un mismo algoritmo que toma el uso de la memoria más en cuenta, y está optimizado para la velocidad, mientras que todavía está basado en el mismo algoritmo.No está seguro de si alguno de ellos lo han hecho en un verdadero utilizable de la biblioteca, aunque.

El uso de un estado de la sesión y agregar los objetos de uno en uno ?

este optimizador también se puede configurar mediante el uso de parámetros -Dmvel2.deshabilitar.jit=true

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top