• Optimizar la visualización de la taxonomía

  • Hemos intentado hacer de OpenKM una aplicación lo más intuitiva posible, sin embargo siempre viene bien algún consejo.
Hemos intentado hacer de OpenKM una aplicación lo más intuitiva posible, sin embargo siempre viene bien algún consejo.
Forum rules: Por favor, antes de preguntar algo consulta el wiki de documentación o utiliza la función de búsqueda del foro. Recuerda que no tenemos una bola de cristal ni poderes mentales, o sea que que para informar sobre un error es necesario que nos indiques tanto la versión de OpenKM que usas como la del navegador y sistema operativo. Para más información consulta Cómo informar de fallos de forma efectiva.
 #20593  by diegospano
 
Estoy usando OpenKM en un Ubuntu 12 con Mysql.

En mi repositorio tengo un primer nodo llamado Legajos del cual se desprenden una carpeta por cada letra y dentro de cada letra los legajos cuyos apellidos correspondan a dicha letra. La cantidad de legajos cargados es de aprox. 20.000 y debo llegar a 90.000.

El problema se me plantea cuando quiero browsear la taxonomía, ya que es bastante lento. Describo el proceso para que entiendan en donde está la lentitud.

1- Voy a la opción Archivo --> Buscar carpeta
2- Escribo parte del nombre del legajo y obtengo los resultados. Este proceso es rapidisimo.
3- Elijo un resultado y selecciono la opción "Ir a la carpeta". Acá se da la lentitud. Esto puede tardar casi un minuto hasta que se posiciona en la taxonomia en la carpeta correspondiente.

He notado que con el usuario okmAdmin es algo más rápido, en cambio con un usuario que pertenece al rol que tiene acceso al nodo "Legajos" y sus subcarpetas,la demora es la que mencioné anteriormente.

Suponiendo que era un problema de optimización de Mysql empecé a cambiar sus parámetros de configuración pero no obtuve resultados. Analizando las consultas que genera el OpenKM encontré que ejecuta lo siguiente:
Query /* select nb.uuid from NodeBase nb where nb.parent=:parent and nb.name=:name */ select nodebase0_.NBS_UUID as col_0_0_ from OKM_NODE_BASE nodebase0_ where nodebase0_.NBS_PARENT='cafebabe-cafe-babe-cafe-babecafebabe' and nodebase0_.NBS_NAME='okm:root' limit 1

Query /* select nb.uuid from NodeBase nb where nb.parent=:parent and nb.name=:name */ select nodebase0_.NBS_UUID as col_0_0_ from OKM_NODE_BASE nodebase0_ where nodebase0_.NBS_PARENT='c38d2468-8843-4ca0-b4e6-b4cdc3eb666f' and nodebase0_.NBS_NAME='Legajos' limit 1

Query /* select nb.uuid from NodeBase nb where nb.parent=:parent and nb.name=:name */ select nodebase0_.NBS_UUID as col_0_0_ from OKM_NODE_BASE nodebase0_ where nodebase0_.NBS_PARENT='543fb20a-1545-47b3-8911-ff8c18cbd48e' and nodebase0_.NBS_NAME='A' limit 1

Query /* load collection com.openkm.dao.bean.NodeBase.userPermissions */ select userpermis0_.NUP_NODE as NUP1_67_0_, userpermis0_.NUP_PERMISSION as NUP2_0_, userpermis0_.NUP_USER as NUP3_0_ from OKM_NODE_USER_PERMISSION userpermis0_ where userpermis0_.NUP_NODE='b1ff6fb8-3aa5-4c75-856b-4976373d5c68'

Query /* load collection com.openkm.dao.bean.NodeBase.rolePermissions */ select rolepermis0_.NRP_NODE as NRP1_67_0_, rolepermis0_.NRP_PERMISSION as NRP2_0_, rolepermis0_.NRP_ROLE as NRP3_0_ from OKM_NODE_ROLE_PERMISSION rolepermis0_ where rolepermis0_.NRP_NODE='b1ff6fb8-3aa5-4c75-856b-4976373d5c68'

Query /* select distinct(nbp.group) from NodeBase nb join nb.properties nbp where nb.uuid=:uuid */ select distinct properties1_.NPG_GROUP as col_0_0_ from OKM_NODE_BASE nodebase0_ inner join OKM_NODE_PROPERTY properties1_ on nodebase0_.NBS_UUID=properties1_.NPG_NODE where nodebase0_.NBS_UUID='b1ff6fb8-3aa5-4c75-856b-4976373d5c68'

y después por cada nodo ejecuta consultas parecidas a estas:
Query /* load collection com.openkm.dao.bean.NodeBase.userPermissions */ select userpermis0_.NUP_NODE as NUP1_67_0_, userpermis0_.NUP_PERMISSION as NUP2_0_, userpermis0_.NUP_USER as NUP3_0_ from OKM_NODE_USER_PERMISSION userpermis0_ where userpermis0_.NUP_NODE='ffd439de-0680-4d00-bf7f-0fbc82754b5a'

Query /* load collection com.openkm.dao.bean.NodeBase.rolePermissions */ select rolepermis0_.NRP_NODE as NRP1_67_0_, rolepermis0_.NRP_PERMISSION as NRP2_0_, rolepermis0_.NRP_ROLE as NRP3_0_ from OKM_NODE_ROLE_PERMISSION rolepermis0_ where rolepermis0_.NRP_NODE='ffd439de-0680-4d00-bf7f-0fbc82754b5a'
Por otro lado, pensé que quizás el problema estaba en el tipo de seguridad configurado. Leyendo en la wiki (http://wiki.openkm.com/index.php/Applic ... figuration) cambié la opción security.access.manager y en vez de simple (es como estaba configurado) lo configuré como recursive. Pero al reiniciar el Tomcat y tratar de ingresar al sistema obtengo primero una ventana del navegador con el siguiente error:

Current error: 1, New error: 3

y luego una ventana de OpenKM con los siguientes mensajes:
OKM-012006(GetRootFolder): error interno de la aplicación
null
Error de comunicación con el servidor (callbackGetUserLastUploadedDocuments)
OKM-015006(findPooledTaskInstances): OKM-015006
Could not find datasource
Error de comunicación con el servidor (getLastMonthTopDownloadedDocument)
Error de comunicación con el servidor (getLastUploadedDocuments)
OKM-015006(findUserTaskInstances): OKM-015006
Could not find datasource
OKM-012006(GetThesaurusFolder): error interno de la aplicación
Null
OKM-012006(GetPersonalFolder): error interno de la aplicación
Null
OKM-012006(GetMailFolder): error interno de la aplicación
Null
OKM-012006(GetTrashFolder): error interno de la aplicación
Por lo tanto debo volver atrás con el cambio y dejarlo en "simple".

Ahora las preguntas:

1- hay alguna manera de optimizar la taxonomia para que su navegación se más rapida?
2- El modo de seguridad recursiva, requiere alguna reconfiguración o no funciona por un bug?
3- Hay alguna optimización que pueda hacerse sobre las tablas de Mysql?

Desde ya muchas gracias!!!

Diego
 #20609  by jllort
 
A ver si lo he entendido bien. Tienes una estructura del tipo:
- legajos
--A
---apellido 1
---apellido 2
--B
....
--Z

90.000 ficheros no es nada del otro mundo con este número de ficheros no tienes que optimizar nada.

1- Mi pregunta es cuantos nodos estan colgando de A ( tienes 100, 200, mas de mil ? )
2- Con el okmAdmin siempre será mas rápido porque no hace ningún tipo de evaluación de seguridad.
3- Que hardware tienes.
4- Que hardware en el ordenador cliente tienes ? que navegador estas utilizando ?

A partir de ahí te podré orientar un poco ( un minuto para abrir una carpeta es que algo no esta como toca y pueden ser varias cosas ). En principio como estas con mysql debería funcionarte bien
 #20616  by diegospano
 
Gracias por la pronta respuesta. Te contesto las preguntas que me hiciste:

1- Mi pregunta es cuantos nodos estan colgando de A ( tienes 100, 200, mas de mil ? )
En el nodo A tengo más de 1000, y creo que cuando se termine la importación, seguramente en todos voy a tener mucho más que esa cantidad.


2- Con el okmAdmin siempre será mas rápido porque no hace ningún tipo de evaluación de seguridad.
Qué implica la opción security.access.manager=recursive?. Por qué presenta ese mensaje de error?

3- Que hardware tienes.
El servidor es una máquina virtual con 3GB de RAM, Ubuntu 12 y Mysql. Esta máquina virtual está corriendo en un Blade con 64 GB de RAM.

4- Que hardware en el ordenador cliente tienes ? que navegador estas utilizando ?
Estoy usando una pc con Windows 7 y 2GB de RAM. El navegador es Chrome.

Gracias

Diego
 #20633  by jllort
 
El problema, mas que el número de nodos que cuelgan de una carpeta es la renderización, visualizar 1000 nodos en el navegador es lo que realmente penalizando el tiempo de visualización. Date cuenta que dibujar mil filas en un navegador en ajax tiene un coste elevado, por eso en la versión profesional decidimos implementar el tema de la paginación. Esto lo que permite es solucionar este tipo problemas. Esta funcionalidad - paginación - a la larga se traspará a la versión comunity ( como se hace gradualmente con las que vamos implementando ), pero como muy pronto será a finales del próximo año ( lo que si puedes hacer es probar la trial de la profesional para ver la diferencia en este apardo).

Para el volumen de ficheros que me comentas 90k, creo que con 3GB será suficiente ( todo depende del número de usuarios concurrentes ). Yo te aconsejaría que el tomcat utilice 2GB ( mira el setenv.sh )

2Gb para un windows es poco, aquí mejor si subes a 4GB porque windows es un gran consumidor de recursos al igual que el navegador y esto fijo que te va a penalizar un poco ( aunque subir a 4GB no te soluciona el problema que inicialmente hemos hablado ).

Finalmente la evaluación recursiva evalua todo el path ( todos los nodos y no solo el nodo padre ) para comprobar si un usuario tiene acceso o no a un fichero. Esto hace que sea mas lento. La evaluación recursiva es otra forma de evaluar la seguridad, en el 90% de los casos la seguridad evaluada a nivel del padre es suficiente.
 #21042  by diegospano
 
Siguiendo con este tema, quiero comentar un par de cosas relacionadas.

1- Cuando hago una búsqueda de carpeta y selecciono "Ir a la carpeta"
imagen1.jpg
imagen1.jpg (244.04 KiB) Viewed 3455 times
el sistema me posiciona en la taxonomía y me muestra el documento que contiene dicha carpeta.
imagen2.jpg
imagen2.jpg (271.15 KiB) Viewed 3455 times
Hasta ahí todo bien. Sin embargo, durante el tiempo que transcurre desde "Ir a la carpeta" hasta el posicionamiento en la taxonomía, el puntero del mouse está habilitado, cuando en realidad debería estar con el reloj de arena y la interfaz del sistema deshabilitada, hasta que una vez encontrada la carpeta me devuelva el control del mouse y de la aplicación.

2- Debido a lo anterior, si durante ese transcurso de tiempo entre la búsqueda de la carpeta y su apertura en la taxonomía yo clickeo en el panel de documentos, el sistema se congela y muestra el mensaje "actualizando grupo de propiedades", con lo cual debo cerrar el navegador y volver a abrirlo.
imagen3.jpg
imagen3.jpg (153.64 KiB) Viewed 3455 times
3- Con el IE 8 y 9 la navegación de la taxonomía se detiene con un mensaje del tipo "Un script en esta página está provocando que Internet Explorer se ejecute con lentitud. Si continúa ejecutándose, es posible que el equipo deje de responder. ¿Desea anular el script?".

Gracias!

Diego

About Us

OpenKM is part of the management software. A management software is a program that facilitates the accomplishment of administrative tasks. OpenKM is a document management system that allows you to manage business content and workflow in a more efficient way. Document managers guarantee data protection by establishing information security for business content.