ti-enxame.com

Escalando o Joomla com divisão de leitura e gravação de banco de dados

Eu tenho um servidor mysql na América do Norte (usando o Amazon RDS) e uma réplica de leitura. Eu também tenho uma réplica de leitura para uma nova região - a Austrália.

O servidor australiano é brutalmente lento devido à natureza dinâmica do Joomla, lendo o servidor de banco de dados principal na América do Norte. Eu tentei usar o proxy mysql para dividir a leitura/gravação, mas essa não é uma solução a longo prazo. proxy Mysql parece estar efetivamente morto.

Que outras opções eu tenho?

9
Tom

Se você está usando uma versão decentemente recente de PHP, provavelmente você está usando o driver php mysqlnd. http://us3.php.net/manual/en/book.mysqlnd. php

O Mysqlnd possui uma API de plug-in personalizado e pode funcionar da mesma maneira que o proxy mysql - por exemplo http://pecl.php.net/package/mysqlnd_ms é um plug-in que divide leituras e gravações e possui um recente comunicado oficial 9/2013

Lembre-se também, o Joomla sempre grava na tabela de sessões. O uso do memcache ou apc apenas armazena os dados da sessão no cache - não os metadados da sessão.

Você pode obter o mesmo aumento de desempenho descartando sua tabela #_sessions e recriá-la usando o mecanismo de dados de memória em vez de innodb ou myisam.

2
garyamort

O Joomla (e outros CMSs similares) foram desenvolvidos para uma arquitetura LAMP, com a hospedagem comum em mente. Por exemplo. Baixa latência entre o servidor da Web e o banco de dados.

O Amazon RDS foi projetado para dimensionar um banco de dados relacional na nuvem. Portanto, como a distribuição regional e a redundância são importantes, são esperadas lantências mais altas.

Se você tiver requisitos específicos solicitando o Amazon RDS, poderá configurar:

  • Joomla com um MySQL local para gerenciamento geral de sites (ativos estáticos, fáceis de replicar)
  • Conexão Amazon RDS, uma conexão específica do aplicativo para o seu desenvolvimento

Extensões de terceiros, desenvolvidas com baixa latência em mente, não funcionarão com o Amazon RDS.

2
Anibal

Toda página gerada pelo Joomla precisará gravar na tabela de sessões.

Então, sugiro usar o memcache ou o apc para gerenciamento de sessões. Isso deve ajudá-lo a obter zero-write no banco de dados; portanto, a réplica de leitura será suficiente para a maioria das páginas.

1
Shyam

Outra opção de melhoria de velocidade seria colocar o Nginx na frente dele como um proxy reverso. Isso reduziria muito o acesso ao banco de dados, pois as páginas comuns nunca iriam para o joomla e o mysql não consegue encontrar a configuração do proxy, mas estas são as configurações básicas

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