it-swarm.com.de

Skalierung von Joomla mit Database Read Write Splitting

Ich habe einen MySQL-Server in Nordamerika (mit Amazon RDS) und eine Lesereplik. Ich habe auch eine Lesereplik für eine neue Region - Australien.

Der australische Server ist brutal langsam, da Joomla den Haupt-DB-Server in Nordamerika dynamisch ausliest. Ich habe versucht, MySQL-Proxy zu verwenden, um das Lesen/Schreiben aufzuteilen, aber das ist keine langfristige Lösung. MySQL-Proxy scheint praktisch tot zu sein.

Welche anderen Optionen habe ich?

9
Tom

Wenn Sie eine anständige aktuelle Version von PHP verwenden, dann verwenden Sie wahrscheinlich den PHP-Treiber mysqlnd. http://us3.php.net/manual/en/book.mysqlnd. php

Mysqlnd hat eine benutzerdefinierte Plugin-API und kann auf die gleiche Weise funktionieren wie MySQL-Proxy - zum Beispiel http://pecl.php.net/package/mysqlnd_ms ist ein Plugin, das Lese- und Schreibvorgänge aufteilt und ein Aktuelle offizielle Version 9/2013

Denken Sie auch daran, dass Joomla immer in die Sitzungstabelle schreibt. Mit memcache oder apc werden nur die Sitzungsdaten im Cache gespeichert, nicht die Sitzungsmetadaten.

Sie können die gleiche Leistungssteigerung erzielen, indem Sie die Tabelle #_sessions löschen und mithilfe der Memory Data Engine anstelle von innodb oder myisam neu erstellen.

2
garyamort

Joomla (und andere ähnliche CMSs) wurden für eine LAMP-Architektur unter Berücksichtigung des gemeinsamen Hostings entwickelt. Z.B. Geringe Latenz zwischen Webserver und Datenbank.

Mit Amazon RDS kann eine relationale Datenbank in der Cloud skaliert werden. Da regionale Verteilung und Redundanz wichtig sind, werden höhere Latenzen erwartet.

Wenn Sie besondere Anforderungen an Amazon RDS haben, können Sie Folgendes konfigurieren:

  • Joomla mit einem lokalen MySQL für die allgemeine Verwaltung der Site (statische Assets, leicht zu replizieren)
  • Amazon RDS-Verbindung, eine anwendungsspezifische Verbindung für Ihre Entwicklung

Erweiterungen von Drittanbietern, die mit Blick auf eine geringe Latenz entwickelt wurden, funktionieren mit Amazon RDS nicht.

2
Anibal

Jede von Joomla erzeugte Seite muss in die Sitzungstabelle schreiben.

Daher würde ich vorschlagen, memcache oder apc für die Sitzungsverwaltung zu verwenden. Dies sollte Ihnen helfen, das Schreiben in die Datenbank auf null zu beschränken. Daher ist ein Read-Replica für die meisten Seiten ausreichend.

1
Shyam

Eine weitere Option zur Geschwindigkeitsverbesserung wäre, Nginx als Reverse-Proxy davor zu stellen. Dies würde den Datenbankzugriff erheblich reduzieren, da die allgemeinen Seiten niemals zu joomla und mysql gehen würden. Ich kann die Proxy-Konfiguration nicht finden, aber dies sind die Grundeinstellungen

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