Load Balancing - PHP / Mysql [fechado]

1

Eu tenho um servidor que depende muito de um banco de dados MYSQL. Recentemente, houve problemas de carga e problemas de conexão com o mysql max.

Minha idéia é ter um servidor primário com o código php e arquivos e um banco de dados, e um servidor secundário com apenas o banco de dados duplicado (para que ambos os bancos de dados sejam os mesmos). O usuário acessará o servidor principal e, dentro do código PHP, metade das conexões serão feitas no banco de dados no servidor principal e metade no banco de dados no servidor secundário.

A minha pergunta é: esta é a melhor maneira de reduzir a carga do servidor? Ou os arquivos devem ser duplicados também, de modo que o processamento do lado do servidor do código php também seja dividido entre os dois servidores.

obrigado!

    
por danielb 26.03.2014 / 15:57

3 respostas

1

Seu primeiro passo para melhorar os problemas seria separar o servidor MySQL e a parte de processamento da web. Parece que você precisa mudar para a 2 sistema de níveis . Uma vez que as duas camadas estão separadas, você pode olhar para o balanceamento de carga do nível do MySQL se realmente é onde você está tendo um problema de carga .

Antes de ir tão longe, eu olharia para um armazenamento em cache do MySQL módulo como o memcached.

    
por 26.03.2014 / 16:19
0

Eu diria que este não é o melhor caminho. Se você tiver (ou mais) servidores, acho que o melhor que você pode fazer é colocar o aplicativo (php) e o banco de dados em servidores diferentes. Além disso, você já pensou em usar o verniz para o seu conteúdo estático?

Em termos de desempenho, o balanceamento de carga nem sempre é a solução final, mas você pode tentar refatorar suas consultas mysql.

    
por 26.03.2014 / 16:11
0

Não há uma resposta "certa" específica que cubra todos os cenários de balanceamento de carga (para reduzir a carga) de um aplicativo da Web baseado em LAMP.

Dito isso, há algumas dicas ou comentários que podem ser aplicados:

  • Primeiramente, sugiro criar um perfil do servidor e dos aplicativos para entender e identificar o gargalo, certificando-se no seu caso que Na verdade, é o banco de dados MySQL.
  • Uma vez / se tiver certeza de que é na verdade, mysql, tente as diferentes técnicas de otimização, várias delas mencionadas aqui: incrementando variáveis (tamanho) no arquivo de configuração mysql se você tiver RAM suficiente, adicionando cache com memcached para ex, revisando consultas lentas e adicionando índices conforme necessário, adicionando caching frontal com verniz para ex, usando disco SSD, etc.
  • Se você decidir mudar para um usando vários servidores, terá várias opções válidas. Você pode ter a) uma arquitetura onde você recebe solicitações em seu servidor web e redireciona as consultas do banco de dados (você pode fazer isso no código php) para dois ou mais servidores de banco de dados na parte de trás como você sugeriu (você terá que fazer certeza de que eles estão em sincronia, replicados) ou você pode ter b) uma arquitetura onde os pedidos são manipulados na frente por um balanceador de carga (com nginx por exemplo) e eles são redirecionados para dois ou mais servidores que contêm toda a pilha (php código mais banco de dados), você também precisará replicar os bancos de dados e possivelmente os arquivos (se os usuários fizerem upload de arquivos, por exemplo). Dependendo das particularidades da sua situação, uma opção pode ser "melhor" que a outra, e também há possibilidades mais complexas.
por 26.03.2014 / 17:17