it-swarm-es.tech

Escalando Joomla con división de lectura y escritura de la base de datos

Tengo un servidor mysql en América del Norte (usando Amazon RDS) y una réplica de lectura. También tengo una réplica de lectura para una nueva región: Australia.

El servidor australiano es brutalmente lento debido a la naturaleza dinámica de Joomla que lee el servidor DB principal en América del Norte. Intenté usar el proxy mysql para esto para dividir la lectura/escritura, pero esa no es una solución a largo plazo. proxy Mysql parece estar efectivamente muerto.

¿Qué otras opciones tengo?

9
Tom

Si está utilizando una versión decentemente reciente de PHP, entonces probablemente esté utilizando el controlador php mysqlnd. http://us3.php.net/manual/en/book.mysqlnd. php

Mysqlnd tiene una API de complemento personalizada y puede funcionar de la misma manera que el proxy mysql, por ejemplo http://pecl.php.net/package/mysqlnd_ms es un complemento que divide lecturas y escrituras y tenía un reciente lanzamiento oficial 9/2013

También tenga en cuenta que Joomla siempre escribe en la tabla de la sesión. El uso de memcache o apc solo almacena los datos de la sesión en la caché, no los metadatos de la sesión.

Puede obtener el mismo aumento de rendimiento soltando su tabla #_sessions y recreándola usando el motor de datos de memoria en lugar de innodb o myisam.

2
garyamort

Joomla (y otros CMS similares) se han desarrollado para una arquitectura LAMP, teniendo en cuenta el alojamiento común. P.ej. Baja latencia entre el servidor web y la base de datos.

Amazon RDS está diseñado para escalar una base de datos relacional en la nube. Por lo tanto, dado que la distribución regional y la redundancia son importantes, se esperan mayores frecuencias.

Si tiene requisitos específicos para Amazon RDS, puede configurar:

  • Joomla con un MySQL local para la gestión general del sitio (activos estáticos, fácil de replicar)
  • Conexión de Amazon RDS, una conexión específica de la aplicación para su desarrollo

Las extensiones de terceros, desarrolladas teniendo en cuenta la baja latencia, no funcionarán con Amazon RDS.

2
Anibal

Cada página generada por Joomla deberá escribir en la tabla de sesión.

Por lo tanto, sugeriría usar memcache o apc para la administración de la sesión. Eso debería ayudarlo a lograr una escritura cero en la base de datos, por lo tanto, la réplica de lectura será suficiente para la mayoría de las páginas.

1
Shyam

Otra opción de mejora de la velocidad sería poner a Nginx frente a él como un proxy inverso. Esto reduciría mucho el acceso a la base de datos ya que las páginas comunes nunca irían a joomla y mysql no puede encontrar la configuración del proxy, pero esta es la configuración base

http://docs.joomla.org/Nginx

http://www.nginxtips.com/nginx-joomla-friendly-url/

https://stackoverflow.com/questions/23960359/how-to-get-nginx-proxy-caching-to-work-with-dynamic-content

https://stackoverflow.com/a/2655023/6096

0
tristanbailey