Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Ruben Lozano Garcia
Con cual base de datos es mas estable Liferay???
January 9, 2009 1:24 AM
Answer

Ruben Lozano Garcia

Rank: Junior Member

Posts: 64

Join Date: October 15, 2008

Recent Posts

Hola, estoy teniendo bastantes problemas de estabilidad con liferay+MySQL, de modo que no me parece la solucion mas estable para tener un servidor en produccion.

Que solucion es la mas estable?? da postgres los mismos problema.


Me refiero a los tipicos en MySQL + liferay, com.liferay.portal.kernel.dao.orm.ORMException, java.net.SocketException: Broken pipe y derivados que da con la BD MySQL.


Por otra parte me comentan que con ?autoReconnect=true se solucionan los problemas con MySQL, realmente es asi?? alguien lo ha probado.



Saludos.
Juan Gonzalez
RE: Con cual base de datos es mas estable Liferay???
January 9, 2009 8:50 AM
Answer

Juan Gonzalez

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1872

Join Date: October 28, 2008

Recent Posts

La verdad el problema dudo mucho que resida en Liferay.

Las Bases de Datos hay que tunearlas, y a veces bastante, para conseguir estabilidad y rendimiento.

Al final lo importante es saber qué BDD es la que conoces más a fondo, y las necesidades que teneis.

Por ejemplo: MySQL tiene alguna putadita como ésta (lo del "autoReconnect" que te puse en otro post), pero si sabes administrar bien la BDD no tendrás ningun problema. Oracle también tiene "putadas" para poder tunearlo en condiciones, ya que consume mucha memoria para poder usarlo decentemente... PostgreSQL dicen que es más lenta pero mas estable que MySQL....Etc.

Lo mismo pasa con el servidor J2EE que uses, JBoss tiene buen rendimiento pero es más dificil de configurar que Glassfish (mi favorito), por ejemplo.


Saludos
Ruben Lozano Garcia
RE: Con cual base de datos es mas estable Liferay???
January 13, 2009 12:55 AM
Answer

Ruben Lozano Garcia

Rank: Junior Member

Posts: 64

Join Date: October 15, 2008

Recent Posts

Muy interesante la verdad, buscando informacion sobre este tema me he encontrado con las siguiente opciones de configuracion para liferay:

autoReconnect="true"
removeAbandoned="true"
emoveAbandonedTimeout="60"


Los hay que solo ponen la de autoReconnect=true,


Y luego esta la que trae por defecto:
useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false



Es mas estable poner solo autoReconnet="true" o añadirlo a esas opciones por defecto, o incluso poner el removeAbandoned="true"
emoveAbandonedTimeout="60"?????



La verdad es que de MySQL se lo justo, y cualquier ayuda es bienvenida.

Por ultimo a ver si alguno del staff de liferay ve esto y comenta que opciones de configuracion son mas recomendables (aparte de la autoReconnect="true" que me ha quedado clarisimo ;-)



Saludos.
Rubén Lozano.
Juan Gonzalez
RE: Con cual base de datos es mas estable Liferay???
January 13, 2009 10:48 AM
Answer

Juan Gonzalez

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1872

Join Date: October 28, 2008

Recent Posts

Ruben Lozano Garcia:
Por ultimo a ver si alguno del staff de liferay ve esto y comenta que opciones de configuracion son mas recomendables (aparte de la autoReconnect="true" que me ha quedado clarisimo ;-)


No soy del staff de Liferay, pero dado que Liferay utiliza JDBC, la opcion de "removeAbandoned" y "removeAbandonedTimeOut" no parecen ser muy recomendables, ya que todo buen pool que se precie debe tener las conexiones SIEMPRE ACTIVAS, y en este caso se presupone que la conexión quedará inactiva al cabo de "n" segundos (removeAbandonedTimeout). Para eso justamente decimos a MySQL lo de autoReconnect="true".

Eso si, si el servidor de BDD se reinicia (cosa muy poco común), habría que reiniciar tambien el de aplicaciones, pero con la gran ventaja de un mayor rendimiento a la hora de acceder a BDD.

Saludos
Ruben Lozano Garcia
RE: Con cual base de datos es mas estable Liferay???
January 22, 2009 4:23 AM
Answer

Ruben Lozano Garcia

Rank: Junior Member

Posts: 64

Join Date: October 15, 2008

Recent Posts

Bueno despues de 1 semana sin ningun pete extraño, llevaba 2 dias sin acceder al portal y he vuelto a testearlo y de pronto me he encontrado con el siguiente pete, al escribir un nuevo mensaje de prueba en el foro:


09:49:13,570 ERROR [JDBCExceptionReporter:78] Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: Broken pipe

STACKTRACE:

java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2744)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3256)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1313)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1448)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
at org.hibernate.loader.Loader.doQuery(Loader.java:674)
.
.
.
.
.
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)


** END NESTED EXCEPTION **



Last packet sent to the server was 5 ms ago.
09:49:13,722 ERROR [jsp:52] com.liferay.portal.kernel.dao.orm.ORMException: could not load an entity: [com.liferay.counter.model.Counter#com.liferay.portlet.social.model.SocialActivity]
at com.liferay.portal.dao.orm.hibernate.ExceptionTranslator.translate(ExceptionTranslator.java:41)
at com.liferay.portal.dao.orm.hibernate.SessionImpl.get(SessionImpl.java:111)
at com.liferay.counter.service.persistence.CounterPersistence.createCounterRegister(CounterPersistence.java:275)
at com.liferay.counter.service.persistence.CounterPersistence.createCounterRegister(CounterPersistence.java:261)
at com.liferay.counter.service.persistence.CounterPersistence.getCounterRegister(CounterPersistence.java:252)
at com.liferay.counter.service.persistence.CounterPersistence.increment(CounterPersistence.java:116)
at com.liferay.counter.service.persistence.CounterPersistence.increment(CounterPersistence.java:106)
at com.liferay.counter.service.persistence.CounterUtil.increment(CounterUtil.java:46)
at com.liferay.counter.service.impl.CounterLocalServiceImpl.increment(CounterLocalServiceImpl.java:48)
at com.liferay.portlet.social.service.impl.SocialActivityLocalServiceImpl.addActivity(SocialActivityLocalServiceImpl.java:65)
at com.liferay.portlet.social.service.impl.SocialActivityLocalServiceImpl.addActivity(SocialActivityLocalServiceImpl.java:52)
at com.liferay.portlet.messageboards.service.impl.MBMessageLocalServiceImpl.addMessage(MBMessageLocalServiceImpl.java:537)
at com.liferay.portlet.messageboards.service.impl.MBMessageLocalServiceImpl.addMessage(MBMessageLocalServiceImpl.java:262)
at com.liferay.portlet.messageboards.service.impl.MBMessageLocalServiceImpl.addMessage(MBMessageLocalServiceImpl.java:244)
at com.liferay.portlet.messageboards.service.impl.MBMessageServiceImpl.addMessage(MBMessageServiceImpl.java:204)
at com.liferay.portlet.messageboards.service.MBMessageServiceUtil.addMessage(MBMessageServiceUtil.java:109)
at com.liferay.portlet.messageboards.action.EditMessageAction.updateMessage(EditMessageAction.java:241)
at com.liferay.portlet.messageboards.action.EditMessageAction.processAction(EditMessageAction.java:86)
at com.liferay.portal.struts.PortletRequestProcessor.process(PortletRequestProcessor.java:180)
at com.liferay.portlet.StrutsPortlet.processAction(StrutsPortlet.java:197)






De modo que parece que con los cambios anteriores, mejora pero no se vuelve totalmente estable.

Alguien tiene alguna sugerencia...


Saludos.
Rubén Lozano.










Pd: Intentar instalar y que funcione el portlet de workflow en la 5.1.2 es el camino mas rapido al manicomio...
Juan Gonzalez
RE: Con cual base de datos es mas estable Liferay???
January 22, 2009 8:19 AM
Answer

Juan Gonzalez

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1872

Join Date: October 28, 2008

Recent Posts

¿Has reiniciado el servidor de Base de Datos (o se ha reiniciado) durante este tiempo? Ten cuenta que muchos servidores de bases de datos se reinician cada x tiempo (consulta con los administradores del sistema). Si se ha reiniciado la BDD es normal que de este error, ya que las conexiones están siempre activas, y si se reinicia el servidor de BDD habria que hacerlo después en el servidor donde tengas el Liferay (para que actualicen las conexiones del pool).

Si no es el caso, envia tu fichero context.xml (ó server.xml) en donde tengas la configuracion de la BDD para echar un vistazo a la configuración del pool.

De todos modos creo que es más posible que haya ocurrido la primera opción.


Saludos