Precisa de algum conselho para um servidor mysql ocupado

2

Tenho cerca de 150 tarefas cron executando esse processo entre 6 e 10 inserções a cada 3 segundos. Há MUITAS declarações selecionadas acontecendo a cada 3 segundos também.

Meu problema é que as coisas funcionam muito bem por um tempo e depois começam a bagunçar e parecem não responder. Eu tenho 16 GB de memória e apenas 20% é usado e meu uso da CPU é em média cerca de 2,0. Isso me faz pensar que tenho algumas opções que posso ajustar em algum lugar.

Eu estava tentando mexer com os descritores de arquivos na minha outra dedi box, mas acabei perdendo acesso root por algum motivo, então só quero fazer isso de novo se alguém puder me apontar um tutorial muito bom.

O Opened_tables do MySQL está em 15,6 milhões (muito?)

Eu gostaria apenas de alguns conselhos gerais sobre configurações que eu deveria estar fazendo e coisas que eu deveria estar fazendo para fazer o servidor funcionar bem. Obviamente, tenho os recursos disponíveis, mas presumo que o MySQL / Apache seja limitado de alguma forma.

Especificação do servidor: Linux CentOS 5 com Plesk 9.5.4 e MySQL 5.0.

Eu realmente aprecio qualquer ajuda antecipadamente.

    
por webnoob 16.06.2011 / 22:17

3 respostas

4

O que posso recomendar é usar o sintonizador MySQL . Esse script perl fornece muitas recomendações sobre quais variáveis de configuração você pode definir ou alterar. Sem saber suas estatísticas exatas, provavelmente não posso dar uma resposta melhor.

Eu também recomendo que você procure no site MySQL por cada variável. MySQLtuner recomenda exatamente o que está fazendo. Então você aprenderá sobre muitas novas variáveis que você pode definir. Além disso, você deve executar essa ferramenta cerca de 48 horas depois de alterar as variáveis na primeira vez. Muitas vezes você recebe mais algumas (melhores) recomendações.

Você usa mais tabelas de innodb ou myisam? Está atualizando para o MySQL 5.5 uma opção?

ATUALIZAÇÃO: Quanto à sua pergunta sobre bons tutoriais. O que eu recomendo vivamente é ler o MySQL Performance Blog . Há realmente muitos bons artigos (um que eu já criei).

    
por 16.06.2011 / 22:32
1

Tenha em mente que as tabelas myisam são bloqueadas durante a inserção ou atualização, portanto, as consultas selecionadas aguardarão.

Você pode acelerar as inserções com a opção de inserções simultâneas, mas não espera milagres. link

Eu diria que mudar para 5.5.xe InnoDB seria uma jogada inteligente ...

    
por 17.06.2011 / 16:15
1

Eu acho que o script MySQL Tuning Primer (primeiro item na página) é mais útil que o script MySQL Tuner mencionado anteriormente .

Assumindo que tudo está bem com o script, você já pensou em otimizar suas consultas usando o recurso EXPLAIN?

Como outros já mencionaram, o InnoDB oferece bloqueio em nível de linha sobre o bloqueio de tabelas do MyISAM. Enquanto a velocidade do InnoDB é muito melhor no MySQL 5.5, qualquer versão 5.x deve fornecer um aumento.

O recurso LOAD DATA INFILE é muito mais rápido que uma inserção. Se for possível seguir esse caminho, faça isso. Se suas tabelas tiverem muitos índices, assegure-se de que seu key_buffer_size seja grande o suficiente. Se você está usando apenas 20% da sua memória RAM e este é um servidor MySQL dedicado, então certamente você pode melhorar sua configuração geral para um melhor desempenho.

    
por 17.06.2011 / 16:47