MySQL em um servidor dedicado vs aumentando a RAM no servidor com o aplicativo MySQL + Rails

1

Eu estou correndo em problemas de escala com um aplicativo Rails rodando em cima do MySQL. Estou usando o memcached e tenho muitos índices.

Eu também estou começando a aumentar valores para determinadas configurações do my.cnf, como tmp_table_size e innodb_buffer_pool_size .

Mas isso me leva à minha pergunta. Devo mover o banco de dados MySQL para um segundo servidor de banco de dados dedicado (aumentando assim a quantidade de memória que o MySQL pode usar para buffer pools e tal) OU devo aumentar a RAM no servidor atual, que hospeda tanto o Rails quanto o MySQL?

Eu estou supondo que eu aumente a RAM disponível para o MySQL muito mais se eu mover o MySQL para seu próprio servidor. Mas estou preocupado com a latência de consultas do MySQL enviadas pela rede entre os dois servidores, em vez de usar mysql.sock .

Algum conselho?

    
por dan 25.06.2011 / 20:43

1 resposta

2

Primeiro, entenda onde está o seu gargalo. Seu aplicativo é principalmente lido a partir do SQL? Escrita? Se você ler principalmente e seu conjunto de dados não se encaixa mais na memória, adicionar mais memória RAM provavelmente aumentará o desempenho. Talvez os dados já caibam na memória e o MySQL rouba a CPU [por exemplo, ele faz varreduras de tabela completas porque não pode fazer uso do índice em algumas circunstâncias como subconsultas]

Alguns conselhos:

  • comece a monitorar o que está acontecendo com seu servidor usando softwares como o Munin .
  • habilitar o log de consultas lentas
  • analise quais consultas você envia para o SQL - por exemplo, com o mysqsla - talvez depois de tudo você faça varreduras de tabela completa desnecessárias?
  • use explain para cada uma das consultas mais frequentes

Somente depois disso, decida se deseja:

  • consiga mais poder de CPU [e mova o MySQL para outra máquina]
  • compre mais RAM
  • otimize seu código
por 25.06.2011 / 21:10