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?
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.
la source
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.
la source
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
la source