Mise à l'échelle de Joomla avec la base de données en lecture-écriture

9

J'ai un serveur mysql en Amérique du Nord (utilisant Amazon RDS) et une réplique en lecture. J'ai également une réplique en lecture pour une nouvelle région - l'Australie.

Le serveur australien est brutalement lent en raison de la nature dynamique de la lecture par Joomla du serveur DB principal en Amérique du Nord. J'ai essayé d'utiliser le proxy mysql pour diviser la lecture / écriture, mais ce n'est pas une solution à long terme. Le proxy Mysql semble être effectivement mort.

Quelles autres options ai-je?

À M
la source

Réponses:

2

Joomla (et d'autres CMS similaires) ont été développés pour une architecture LAMP, avec l'hébergement commun à l'esprit. Par exemple, faible latence entre le serveur Web et la base de données.

Amazon RDS est conçu pour faire évoluer une base de données relationnelle dans le cloud. Ainsi, comme la distribution régionale et la redondance sont importantes, des lantences plus élevées sont attendues.

Si vous avez des exigences spécifiques pour demander Amazon RDS, vous pouvez configurer:

  • Joomla avec un MySQL local pour la gestion générale du site (actifs statiques, facile à répliquer)
  • Connexion Amazon RDS, une connexion spécifique à l'application pour votre développement

Les extensions tierces, développées avec une faible latence en tête, ne fonctionneront pas avec Amazon RDS.

Anibal
la source
Vous n'êtes pas sûr de comprendre vos deux points? Je vais continuer à utiliser RDS, alors proposez-vous un Master RDS en Australie? Je peux également tirer parti d'une connexion RDS avec la réplique en lecture avec mes composants personnalisés, mais pas avec le noyau Joomla. Vous ne savez donc pas ce que vous entendez par une connexion spécifique à l'application. Pouvez-vous s'il vous plaît développer?
Tom
2

Si vous utilisez une version décemment récente de PHP, vous utilisez probablement le pilote php mysqlnd. http://us3.php.net/manual/en/book.mysqlnd.php

Mysqlnd a une API de plug-in personnalisée et peut fonctionner de la même manière que le proxy mysql - par exemple http://pecl.php.net/package/mysqlnd_ms est un plug-in qui divise les lectures et les écritures et dont la version officielle est récente 9/2013

Gardez également à l'esprit que Joomla écrit toujours sur la table de session. L'utilisation de memcache ou apc stocke simplement les données de session dans le cache - pas les métadonnées de session.

Vous pouvez obtenir la même amélioration des performances en supprimant votre table #_sessions et en la recréant à l'aide du moteur de données Mémoire au lieu d'innodb ou myisam.

garyamort
la source
1

Chaque page générée par Joomla devra être écrite dans la table de session.

Je suggère donc d'utiliser memcache ou apc pour la gestion de session. Cela devrait vous aider à atteindre zéro écriture dans la base de données, donc la réplique en lecture sera suffisante pour la plupart des pages.

Shyam
la source
C'est un excellent point. Cela aidera avec les écritures, mais ce qui est vraiment important, c'est comment utiliser la réplique en lecture pour le noyau de Joomla? Pour le moment, je ne vois que le proxy mysql ou le piratage du noyau comme options. Je suppose que HAproxy est également une option mais ce n'est pas aussi clair.
Tom
1. AWS lui-même prend en charge la réplication ( aws.amazon.com/rds/faqs/#replication ) 2. L'autre option est la réplication intégrée à mysql
Shyam
Je pense que vous vous méprenez. J'utilise déjà la réplication avec RDS. Ma question est de savoir comment diviser les opérations de lecture Joomla sur cette réplique de lecture.
Tom
0

Une autre option d'amélioration de la vitesse serait de placer Nginx devant lui en tant que proxy inverse. Cela réduirait beaucoup l'accès à la base de données car les pages communes n'iraient jamais vers joomla et mysql Impossible de trouver la configuration du proxy mais ce sont les configurations de base

http://docs.joomla.org/Nginx

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

/programming/23960359/how-to-get-nginx-proxy-caching-to-work-with-dynamic-content

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

tristanbailey
la source