Scalare Joomla con Database read scrivere split


9

Ho un server mysql con in Nord America (usando Amazon RDS) e una replica di lettura. Ho anche una replica di lettura per una nuova regione: l'Australia.

Il server australiano è brutalmente lento a causa della natura dinamica di Joomla che legge il server DB principale in Nord America. Ho provato a usare il proxy mysql per questo per dividere la lettura / scrittura, ma questa non è una soluzione a lungo termine. Il proxy Mysql sembra essere effettivamente morto.

Quali altre opzioni ho?

Risposte:


2

Joomla (e altri CMS simili) sono stati sviluppati per un'architettura LAMP, pensando all'hosting comune. Ad esempio bassa latenza tra server Web e database.

Amazon RDS è progettato per ridimensionare un database relazionale nel cloud. Pertanto, poiché la distribuzione e la ridondanza regionali sono importanti, si prevedono lance più elevate.

Se hai requisiti specifici che richiedono Amazon RDS, puoi configurare:

  • Joomla con un MySQL locale per la gestione generale del sito (risorse statiche, facile da replicare)
  • Connessione Amazon RDS, una connessione specifica per l'applicazione per il tuo sviluppo

Le estensioni di terze parti, sviluppate pensando alla bassa latenza, non funzioneranno con Amazon RDS.


Non sei sicuro di aver capito i tuoi due punti? Continuerò a utilizzare RDS, quindi stai suggerendo un Master RDS in Australia? Inoltre posso certo y sfruttare una connessione RDS con la replica di lettura con i miei componenti personalizzati ma non con il core di Joomla. Quindi non sono sicuro di cosa intendi con una connessione specifica dell'applicazione. Puoi per favore elaborare?
Tom,

2

Se stai usando una versione abbastanza recente di PHP, probabilmente stai usando il driver php mysqlnd. http://us3.php.net/manual/en/book.mysqlnd.php

Mysqlnd ha un'API di plug-in personalizzata e può funzionare allo stesso modo del proxy mysql, ad esempio http://pecl.php.net/package/mysqlnd_ms è un plug-in che divide le letture e le scritture e ha avuto una recente versione ufficiale 9/2013

Inoltre, tieni presente che Joomla scrive sempre nella tabella delle sessioni. L'uso di memcache o apc memorizza solo i dati della sessione nella cache, non i metadati della sessione.

Puoi ottenere lo stesso aumento delle prestazioni eliminando la tabella #_sessions e ricrearla utilizzando il motore di dati Memory anziché innodb o myisam.


1

Ogni pagina generata da Joomla dovrà scrivere nella tabella delle sessioni.

Quindi suggerirei di usare memcache o apc per la gestione della sessione. Ciò dovrebbe aiutarti a ottenere zero-write nel database, quindi read-replica sarà sufficiente per la maggior parte delle pagine.


Questo è un punto eccellente. Ciò aiuterà con le scritture, ma ciò che è veramente importante è come posso usare la replica di lettura per il core di Joomla? In questo momento vedo solo il proxy mysql o l'hacking del core come opzioni. Suppongo che anche HAproxy sia un'opzione, ma non è così chiaro.
Tom,

1. AWS stesso supporta la replica ( aws.amazon.com/rds/faqs/#replication ) 2. Un'altra opzione è la replica incorporata di mysql
Shyam,

Penso che tu sia frainteso. Sto già usando la replica con RDS. La mia domanda è come posso dividere le operazioni di lettura di Joomla in quella replica di lettura.
Tom,

0

Un'altra opzione di miglioramento della velocità sarebbe quella di mettere Nginx davanti come proxy inverso. Ciò ridurrebbe molto l'accesso al database poiché le pagine comuni non andrebbero mai su joomla e mysql non riesce a trovare la configurazione del proxy ma queste sono le impostazioni di 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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.