En los últimos proyectos que estamos acometiendo estamos teniendo
problemas de rendimiento derivados del gran volumen de datos gestionados
y/o de dimensiones con altísima cardinalidad.
Esto hace que al
utilizar saiku o saiku-reporting, por ejemplo. Si queremos filtrar por
un miembro de una dimensión con alta cardinalidad, el tiempo que se
consume trasmitiendo los datos por la red sea mucho..
Es por eso
que hemos estado investigando en Stratebi acerca de métodos de mejorar el
rendimiento http y hemos visto que podemos habilitar que tomcat envíe
los datos comprimidos ( referencia: http://tomcat.apache.org/tomcat-7.0-doc/config/http.html ).
De
que se trata? pues bien... si enviamos los datos comprimido en vez de
enviar 10 o 20 MB por la red enviaremos 1 o 2 ganando el correspondiente
tiempo de transferencia.
Cómo se hace? pues bien... en el server.xml del tomcat buscamos la etiqueta connector que está en la linea 69 aprox...
Y le añadimos los tags para habilitar la compresión de los archivos de texto:compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/css,
text/javascript, application/x-javascript,
application/javascript, application/json"
Que básicamente dice
que habilite la compresión, para archivos mayores de 2048 B (2MB) y
que comprima los archivos de texto, xml, css, javascrit y json.Por lo que mi etiqueta connector queda tal que así:
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/css,
text/javascript, application/x-javascript,
application/javascript, application/json"
/>
y aquí tenemos la prueba....Los test antes de habilitar la compresión:
La primera ejecución hace la consulta mdx y envía el resultado por la red..... 17'8MB y tarda 38,7 Segundos.
La segunda ejecución la consulta ya está en caché y sólo envía el resultado por la red... 17,8MB y 22,26 Segundos.
Y ahora los resultados una vez habilitado el tag:
La segunda ejecución la consulta ya está en caché y sólo envía el resultado por la red... 1MB y 4,53 Segundos.
Ejecutando la misma consulta hemos pasado de un tiempo de ejecución de 38,7 a 27,07 segundos en la primera consulta y de 22,26 a 4,53 Segundos una vez la consulta ya está en caché de mondrian.
Una ganancia a tener en cuenta... espero que os sea de ayuda.
2 comentarios:
Hola Disculpa quería consultarte si hay forma de realizar una pre-carga de los reportes de saiku. Para cuando se necesiten ejecutar reportes que demoran demasiado tiempo, estos ya se encuentren en cache y su ejecución sea prácticamente inmediata. Yo logre esto con jpivot, pero no lo logro hacer con saiku. Muchas gracias
BlueHost is ultimately the best web-hosting company with plans for any hosting requirements.
Publicar un comentario