it-swarm.dev

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

J'ai un serveur mysql en Amérique du Nord (utilisant Amazon RDS) et un réplica 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 Joomla qui lit le serveur de base de données principal en Amérique du Nord. J'ai essayé d'utiliser un proxy mysql pour diviser la lecture/écriture, mais ce n'est pas une solution à long terme. proxy Mysql semble être effectivement mort.

Quelles autres options ai-je?

9
Tom

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

Mysqlnd a une API de plugin 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 plugin qui scinde en lecture et en écriture publication officielle récente 9/2013

Gardez également à l'esprit que Joomla écrit toujours dans 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 le même gain de performances en supprimant votre table #_sessions et en la recréant à l'aide du moteur de données Memory au lieu de innodb ou de myisam.

2
garyamort

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

Amazon RDS est conçu pour mettre à l'échelle une base de données relationnelle dans le cloud. Ainsi, étant donné que la distribution et la redondance régionales sont importantes, on s’attend à des loyers plus élevés.

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

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

Les extensions tierces, développées pour une latence réduite, ne fonctionneront pas avec Amazon RDS.

2
Anibal

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

Je suggérerais donc d'utiliser memcache ou apc pour la gestion de session. Cela devrait vous aider à obtenir une écriture nulle dans la base de données. Par conséquent, le réplica en lecture sera suffisant pour la plupart des pages.

1
Shyam

Une autre option d’amélioration de la vitesse consisterait à placer Nginx devant lui en tant que proxy inverse. Cela réduirait beaucoup d'accès à la base de données car les pages communes n'iraient jamais vers joomla et mysql. Impossible de trouver la configuration proxy, mais il s'agit de la configuration de 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