Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Eduardo P García
Clusterizar Liferay con ehcache
June 3, 2011 2:00 AM
Answer

Eduardo P García

Rank: New Member

Posts: 10

Join Date: October 1, 2009

Recent Posts

Buenas,

Hemos montado una instalación Liferay 6.0.4 CE en clúster con ehcache configurada en modo multi-vm-clustered. Los nodos se ven y la replicación funciona, pero cuando ejecutamos test de rendimiento (i.e. simulación de alta carga con Jmeter) observamos que:

1. Hay mucho tráfico entre los miembros del clúster. Deducimos que es debido a la replicación de caché, pero la CPU permanece alta continuamente. Da la impresión que la replica no termina nunca, a pesar de que no se realizan cambios en el portal durante la simulación, es decir, todo debería quedar cacheado rápidamente. Estamos usando la replicación RMI por defecto.

2. Monitorizando los beans de ehcache mediante VisualVM, encontramos que algunos beans, en especial el de com.liferay.portal.velocity.LiferayResourceCacheUtil, tiene muchas faltas de caché.

3. Si añadimos nuevos nodos al clúster, el rendimiento general incluso empeora.

¿Alguien con experiencia en este tipo de problemas podría por favor darnos algún consejo? La documentación de clustering no incluye apenas información para el tratamiento de errores.

Gracias a todos por adelantado
Juan Gonzalez
RE: Clusterizar Liferay con ehcache
June 3, 2011 9:42 AM
Answer

Juan Gonzalez

LIFERAY STAFF

Rank: Liferay Legend

Posts: 2350

Join Date: October 28, 2008

Recent Posts

Prueba con la version 6.0.5 o 6.0.6, es bastante posible que haya habido mejoras respecto al cluster link.

¿No hay ningun mensaje indicativo en los logs? A lo mejor podriais subir el nivel del log en las clases implicadas para verlo mejor.

Si la CPU esta alta puede ser debido a falta de memoria, y mucha ejecucion de garbage collector. Es posible que necesitéis aumentar el HEAP y/o el recolector de basura para mejorar la eficiencia.

Tambien a lo mejor se podría tunear el RMI (yo uso Multicast).
Fernando Nubla Durango
RE: Clusterizar Liferay con ehcache
June 6, 2011 1:45 AM
Answer

Fernando Nubla Durango

Rank: New Member

Posts: 22

Join Date: September 1, 2009

Recent Posts

yo utlizo cluster link para replicar la cache. Es la opción que mejores resultados nos dió en nuestras pruebas.
Hay un plugin oficial llamado ehcache-cluster-web que simplifica la configuración.
Desconozco si está disponible también en la versión CE....

Un saludo!
Eduardo P García
RE: Clusterizar Liferay con ehcache
June 9, 2011 8:08 AM
Answer

Eduardo P García

Rank: New Member

Posts: 10

Join Date: October 1, 2009

Recent Posts

Hola Fernando,

Muchas gracias por tu respuesta. Creo que de momento Cluster Link no está disponible para la CE salvo para índices, o al menos eso es lo que se deduce en http://www.liferay.com/es/web/shuyang.zhou/blog/-/blogs/5229206. Para la caché eh sólo se puede usar RMI o JGroups.

Disponemos de una evaluación de EE con la que podemos probar la configuración de Cluster Link para clúster con el .war que mencionas, pero no hemos encontrado documentación al respecto. ¿Podrías por favor indicarme cómo lo habéis hecho en vuestro caso?

Muchas gracias.
Fernando Nubla Durango
RE: Clusterizar Liferay con ehcache
June 17, 2011 12:57 AM
Answer

Fernando Nubla Durango

Rank: New Member

Posts: 22

Join Date: September 1, 2009

Recent Posts

Hola Eduardo,

La configuración básica es bastante sencilla, desplegar el plugin y activarlo desde el portal-ext.properties
te pego una configuración tanto para los índices y ehcache con clusterlink

un saludo

 1##
 2## Cluster Link
 3##
 4    ehcache.cluster.link.replication.enabled=true       
 5    #para comprobar que funciona correctamente
 6    ehcache.statistics.enabled=true
 7
 8    #
 9    # Set this to true to enable the cluster link. This is required if you want
10    # to cluster indexing and other features that depend the cluster link.
11    #
12    cluster.link.enabled=true
13    lucene.replicate.write=true
14    #
15    # Set this property to autodetect the default outgoing IP address so that
16    # JGroups can bind to it. The property must point to an address that is
17    # accessible to the portal server, www.google.com or your local gateway.
18    #
19    cluster.link.autodetect.address=XXXXXXX:yyyy
20
21    # Definir las ip y puertos deseados, estos son los de por defecto (portal.properties)
22    #
23    # Consolidate multicast address and port settings in one location for easier
24    # maintenance. These settings must correlate to your physical network
25    # configuration (i.e. firewall, switch, and other network hardware matter)
26    # to ensure speedy and accurate communication across a cluster.
27    #
28    # Each address and port combination represent a conversation that is made
29    # between different nodes. If they are not unique or correctly set, there
30    # will be a potential of unnecessary network traffic that may cause slower
31    # updates or inaccurate updates.
32    #
33
34    #
35    # See the property "cluster.link.channel.properties.control".
36    #
37    multicast.group.address["cluster-link-control"]=239.255.0.1
38    multicast.group.port["cluster-link-control"]=23301
39
40    #
41    # See the properties "cluster.link.channel.properties.transport.0" and
42    # "cluster.link.channel.system.properties".
43    #
44    multicast.group.address["cluster-link-udp"]=239.255.0.2
45    multicast.group.port["cluster-link-udp"]=23302
46
47    #
48    # See the property "cluster.link.channel.system.properties".
49    #
50    multicast.group.address["cluster-link-mping"]=239.255.0.3
51    multicast.group.port["cluster-link-mping"]=23303
52
53    #
54    # See the properties "net.sf.ehcache.configurationResourceName" and
55    # "net.sf.ehcache.configurationResourceName.peerProviderProperties".
56    #
57    multicast.group.address["hibernate"]=239.255.0.4
58    multicast.group.port["hibernate"]=23304
59
60    #
61    # See the properties "ehcache.multi.vm.config.location" and
62    # "ehcache.multi.vm.config.location.peerProviderProperties".
63    #
64    multicast.group.address["multi-vm"]=239.255.0.5
65    multicast.group.port["multi-vm"]=23305
Sergio Sanchez
RE: Clusterizar Liferay con ehcache
July 4, 2011 1:04 AM
Answer

Sergio Sanchez

Rank: Junior Member

Posts: 41

Join Date: February 3, 2011

Recent Posts

Hola, se podría intentar probar la replicación de la ehcache con multicast en lugar de la comunicación punto a punto. No sé si esto lo habrás probado ya.
También, deshabilitar las cachés para los objetos que no utilices.

Si lo consideras, comentanos si ves alguna mejora en el rendimiento.
Juan Carlos Toledo Baute
RE: Clusterizar Liferay con ehcache
April 11, 2013 12:55 AM
Answer

Juan Carlos Toledo Baute

Rank: Junior Member

Posts: 50

Join Date: March 30, 2011

Recent Posts

Hola

Quiero activar el Cluster EHCache por defecto (RMI) en Lifeary 6.1.1 ce cga2. ¿ Vale con esta configuracion ?

liferay.home=/datos/lportales/home

# Repositorio
dl.store.impl=com.liferay.portlet.documentlibrary.store.AdvancedFileSystemStore
dl.store.file.system.root.dir=/datos/lportales/home/document_library

#Indice Lucene
lucene.dir=/opt/jboss/lportales-lucene
cluster.link.enabled=true
lucene.replicate.write=true

#EhCache en cluster cfg por defecto
ehcache.cluster.link.replication.enabled=true
#Para permitir estadisticas
ehcache.statistics.enabled=true


¿ O necesito especificar ?


#EhCache
net.sf.ehcache.configurationResourceName=/dgtnt-ehcache/hibernate-clustered.xml
ehcache.multi.vm.config.location=/dgtnt-ehcache/liferay-multi-vm-clustered.xml

Saludos
Juan Gonzalez
RE: Clusterizar Liferay con ehcache
April 11, 2013 1:04 AM
Answer

Juan Gonzalez

LIFERAY STAFF

Rank: Liferay Legend

Posts: 2350

Join Date: October 28, 2008

Recent Posts

Juan Carlos Toledo Baute:
Hola

Quiero activar el Cluster EHCache por defecto (RMI) en Lifeary 6.1.1 ce cga2. ¿ Vale con esta configuracion ?

liferay.home=/datos/lportales/home

# Repositorio
dl.store.impl=com.liferay.portlet.documentlibrary.store.AdvancedFileSystemStore
dl.store.file.system.root.dir=/datos/lportales/home/document_library

#Indice Lucene
lucene.dir=/opt/jboss/lportales-lucene
cluster.link.enabled=true
lucene.replicate.write=true

#EhCache en cluster cfg por defecto
ehcache.cluster.link.replication.enabled=true
#Para permitir estadisticas
ehcache.statistics.enabled=true


¿ O necesito especificar ?


#EhCache
net.sf.ehcache.configurationResourceName=/dgtnt-ehcache/hibernate-clustered.xml
ehcache.multi.vm.config.location=/dgtnt-ehcache/liferay-multi-vm-clustered.xml

Saludos


Hola Juan Carlos,

En principio no hace falta que especifiques las propiedades de net.sf.ehcache.configurationResourceName ni ehcache.multi.vm.config. a menos que quieras "tunear" los valores por defecto.

Solo ten en cuenta que el directorio de la propiedad:

1
2dl.store.file.system.root.dir



debe ser el mismo (estar compartido) por todos los nodos del cluster,

Además, en tu caso los índices tienen que almacenarse de forma separada entre los nodos, por lo que el directorio de:

1
2lucene.dir



debe ser accedido sólamente por un nodo.

Espero haberme explicado bien :-).

Pruebalo y si tienes algun problema coméntalo.
Jpe Franco
RE: Clusterizar Liferay con ehcache
May 29, 2013 10:01 AM
Answer

Jpe Franco

Rank: New Member

Posts: 6

Join Date: August 29, 2012

Recent Posts

En mi caso tengo:
- Versión LiferRay 6.1.0 CE GA1 y Java(TM) SE Runtime Environment (build 1.6.0_38-b05)
- Balanceador LVS
- 2 Nodos Apache Web con sticky sessions y configuración mod_jk con load balancer
- 2 Nodos Tomcat configurados en cluster con replicación con de sesión.
- 1 Nodo con BD Oracle 10g XE y servicio NFS Sever V4 para el contenido multimedia
- Se usa configuración Lucene en cada nodo tomcat con persistencia de los índices en filesystem local.

He probado la configuración cluster que se comenta en el post de ehcache por defecto y los contenidos no se sincronizan, es decir al entrar en un nodo y ocultar una página el otro nodo sigue mostrando la misma, sin embargo al poner ehcache.cluster.link.replication.enabled=false funciona bien la sincronización.

Me gustaría tener ehcache a true, ya que no se que otro efecto puede tener si esta a false, entiendo que no uso cache de segundo nivel en las consultas con el problema de rendimiento que implica.

También tenemos un error que no sabemos si esta relacionado con tener a false esa propiedad.

Adjunto imagen muy representativa de lo que nos pasa, en resumen cada cierto tiempo no se muestran todas las páginas en el backoffice, pero están si están en bd: http://wikis.gfi.es/captura-paginas-bd.png

Alguna idea?

Atentamente,
Jpe Franco | @jpefranco
Attachment

Attachments: captura-paginas-bd.png (91.7k)
Juan Gonzalez
RE: Clusterizar Liferay con ehcache
May 29, 2013 11:51 AM
Answer

Juan Gonzalez

LIFERAY STAFF

Rank: Liferay Legend

Posts: 2350

Join Date: October 28, 2008

Recent Posts

Hola Jesus,

Respecto a la propiedad:

ehcache.cluster.link.replication.enabled

en vuestro caso no deberia existir, ya que esa propiedad es valida si disponéis del plugin ehcache-cluster-web, sólo disponible para la versión EE.

Las únicas propiedades que os haria falta activar serían:

1cluster.link.enabled=true


Dependiendo de si los índices de lucene están en directorios distintos (como es recomendable), habría que activar esta propiedad:

1lucene.replicate.write=true


Respecto a las páginas, no es descartable que Apache tenga algo que ver, aunque yo probaría primero lo anterior.
Fernando Nubla Durango
RE: Clusterizar Liferay con ehcache
May 29, 2013 1:44 PM
Answer

Fernando Nubla Durango

Rank: New Member

Posts: 22

Join Date: September 1, 2009

Recent Posts

Hola,

Como bien dice Juan, la configuración que puse en este hilo como ejemplo es para la versión enterprise de Liferay, para configurar eh-cache a través de clusterlink es necesario desplegar un portlet específico.
De todas formas, no tienes por qué usar clusterlink para la cache, puedes configurarla añadiendo las siguientes propiedad en el portal-ext.properties
ehcache.multi.vm.config.location=/ehcache/liferay-multi-vm-clustered.xml
net.sf.ehcache.configurationResourceName=/ehcache/hibernate-clustered.xml

Nos cuentas si se soluciona tu problema ;)

Un saludo,
Jpe Franco
RE: Clusterizar Liferay con ehcache
May 30, 2013 11:39 PM
Answer

Jpe Franco

Rank: New Member

Posts: 6

Join Date: August 29, 2012

Recent Posts

Gracias Fernado y Juan. Tengo definido las propiedades que comentáis y efectivamente al no poder usar el plugin tengo a false la propiedad su propiedad. También he probado eliminando su propiedad y así dejar claro que se use cluster ehcache y lucene via RMI. Pero nada.

No os parece extraño que las páginas estén en bd y que eran un momento dado ya no se muestren en el backoffice? Y más extraño siempre a partir de la posición 10 tanto en el padre como en los submenus.

Atentamente,
Jpe Franco | @jpefranco
Juan Gonzalez
RE: Clusterizar Liferay con ehcache
May 30, 2013 11:47 PM
Answer

Juan Gonzalez

LIFERAY STAFF

Rank: Liferay Legend

Posts: 2350

Join Date: October 28, 2008

Recent Posts

Hola Jesus,

En la versión que tienes hay varias incidencias sobre el tree de páginas.

Podrías probar en la ultima versión (6.1.1GA2) para comprobar si se sigue reproduciendo.
Jpe Franco
RE: Clusterizar Liferay con ehcache
June 6, 2013 2:30 AM
Answer

Jpe Franco

Rank: New Member

Posts: 6

Join Date: August 29, 2012

Recent Posts

Estamos realizando la migración a la versión 6.1.1 CE GA2 para ver si no se reproduce el error en el árbol de páginas en el backoffice. En paralelo también tenemos un entorno 6.1.0 CE GA1 sin cluster (un solo nodo) y hemos visto que también se ha reproducido el error. La actividad que ha tenido es la común en estos casos: cambios de contenidos, subida de contenido multimedia, algún despliegue nuestro de desarrollo portlet, ...

No sabemos como reproducirlo, como puede ocurrir en otros casos.

Aporto esta información, ya que ayuda a descartar culaquier problema de sincronización en el cluster y así ver si efectivamente es un bug de producto o puede ser algo ligado a los desarrollos de portlet, hook, etc... o un mal uso del backoffice en relación a la gestión de las páginas.

Atentamente,
Jpe Franco | @jpefranco
Jpe Franco
RE: Clusterizar Liferay con ehcache
June 20, 2013 5:16 AM
Answer

Jpe Franco

Rank: New Member

Posts: 6

Join Date: August 29, 2012

Recent Posts

Ya hemos actualizado a la versión 6.1.1 CE GA2 y de momento no se ha reproducido el error que teníamos con el portlet del árbol en el backoffice.

Ahora estamos interesado en pasar a la versión 6.1.20 EE por temas de soporte futuro. ¿

Que pasos habría que seguir? ¿Similar a los pasos que hemos seguido de la 6.1.0 CE GA1 a la 6.1.1 CE GA2, es decir descargar la nueva versión y remplazar la actual, actualizar config, etc..?

Gracias de antemano.

Atentamente,
Jpe Franco | @jpefranco
Juan Gonzalez
RE: Clusterizar Liferay con ehcache
June 20, 2013 6:08 AM
Answer

Juan Gonzalez

LIFERAY STAFF

Rank: Liferay Legend

Posts: 2350

Join Date: October 28, 2008

Recent Posts

Hola Jesús,

Para esta version EE dispones de soporte por parte de Liferay.

Para más información, contacta con Liferay España:

http://www.liferay.com/es/contact-us
Jpe Franco
RE: Clusterizar Liferay con ehcache
June 20, 2013 7:25 AM
Answer

Jpe Franco

Rank: New Member

Posts: 6

Join Date: August 29, 2012

Recent Posts

Gracias Juan por tu rápida respuesta. Pero la idea es probar primero con la versión 6.1.20 EE Trial (30 días) y ver que resultados tenemos. Es la razón por la que antes de contactar con soporte me gustaría conocer los pasos a seguir.

Atentamente,
Jpe Franco | @jpefranco