it-swarm.it

Scalare Joomla con Database read scrivere split

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. proxy Mysql sembra essere effettivamente morto.

Quali altre opzioni ho?

9
Tom

Se stai usando una versione abbastanza recente di PHP, allora 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 letture e scritture e aveva un 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.

2
garyamort

Joomla (e altri CMS simili) sono stati sviluppati per un'architettura LAMP, pensando all'hosting comune. Per 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 dell'applicazione per il tuo sviluppo

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

2
Anibal

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.

1
Shyam

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/

https://stackoverflow.com/questions/23960359/how-to-get-nginx-proxy-caching-to-work-with-dynamic-content

https://stackoverflow.com/a/2655023/6096

0
tristanbailey