cancel
Showing results for 
Search instead for 
Did you mean: 

Webservices lentos, ¿es esto normal?

baskeyfield
Champ in-the-making
Champ in-the-making
Muy buenas a todos,

Estoy integrando liferay con alfresco, y para ello estoy creando portlets que ejercen de cliente de servicios web de alfresco. Uno de ellos es un portlet que muestra los ultimos documentos modificados en 2 meses en un espacio y sus espacios hijos. Para realizar esto hago una consulta lucene:

Query query = new Query("lucene","+PATH:\"/app:company_home/cm:"+path+"//*\"+(@cm\\:modified:["+ISO8601DATEFORMAT.format(cal.getTimeInMillis())+" TO "+ISO8601DATEFORMAT.format(fechaActual)+"])+TYPE:\"{http://www.alfresco.org/model/content/1.0}content\"");

Como veis, en la consulta le paso la ruta en la variable "path" para que me busque ahí y en sus hijos, además le indico un rango de modificación al archivo de 2 meses y le indico que sea de tipo  content.

Esta búsqueda puede tardar unos 7-8 segundos para el directorio raiz, con una cifra de documentos inferior a 1000. ¿es normal este tiempo?

1.- ¿Se puede mejorar la consulta para que sea más rápida?
2.- ¿Hay algún parametro de configuración de Alfresco que la agilice?

Mi instalación consiste en un Red hat 64 bits 4gb ram, Mysql 5.0. La jvm está configurada de la siguiente manera:
export JAVA_OPTS='-Xms512m -Xmx2048m -XXSmiley TongueermSize=1024m -XX:MaxPermSize=20428m -server'

Me urge bastante mejorar estos tiempos, puesto que a medida que creza el repositorio se harán impracticables.
Un saludo y gracias.
10 REPLIES 10

baskeyfield
Champ in-the-making
Champ in-the-making
Buenas,

Conclusiones a las que he llegado hasta ahora:

1- El mismo portlet, hecho con webscripts es practicamente instantaneo, 1 - 2 segundos. Con web services 6 - 7

2- Desde el nodebrowser la consulta lucene es instantanea, 1 -2 segundos.

3- Desde el propio MySql una consulta aun más pesada es más rápida, tardando unas pocas décimas de segundo.

4- Los métodos de consulta para webservices no funcionan correctamente, como por ejemplo el método "query(STORE, path, true);" donde el último parámetro indica si la consulta devolverá metadatos o no. Ya lo ejecutes como true o false NUNCA devuelve nada, los únicos métodos que si devuelven metadatos son queryParent y queryChilds.

5- No soy el primero que dice que los webservices son lentos, desde la propia web de liferay, en su wiki en un tema de integración de Alfresco Liferay dicen:
The main advantage is that allows you to have Liferay and Alfresco in different machines, which is very positive, as they are heavy applications. The main disadvantage is that Web Services is quite slow.

Un saludo.