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?
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.
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:
Les extensions tierces, développées pour une latence réduite, ne fonctionneront pas avec Amazon RDS.
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.
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.