Recentemente, tenho tido problemas com o thrashing devido à falta de memória. (Meu VPS tem 256 milhões no total)
Estou tentando ajustar o MySQL usando mysqltuner.pl e obtenha os seguintes resultados:
-------- Estatísticas Gerais ---------------------------------------- ----------
[-] Verificação de versão ignorada para o script MySQLTuner
[OK] Atualmente executando o MySQL com suporte versão 5.0.51a-3ubuntu5.4-log
[OK] Operando na arquitetura de 64 bits
-------- Estatísticas do mecanismo de armazenamento --------------------------------------- ----
[-] Status: + Archive -BDB -Federated -InnoDB -ISAM -NDBCluster
[-] Dados nas tabelas MyISAM: 114M (Tabelas: 454)
[!!] Total de tabelas fragmentadas: 34
-------- Métricas de desempenho ---------------------------------------- ---------
[-] Até: 40s (570 q [14.250 qps], 23 conexões, TX: 154K, RX: 23K)
[-] Lê / grava: 100% / 0%
[-] Total de buffers: 338,0M globais + 2,7M por thread (20 no máximo threads)
[!!] Uso máximo de memória possível: 392,9M (153% da RAM instalada)
[OK] Consultas lentas: 0% (5/570)
[OK] Maior uso de conexões disponíveis: 15% (3/20)
[!!] Tamanho do buffer de chaves / índices MyISAM totais: 8.0M / 9.4M
[!!] Taxa de acerto do buffer principal: 57,1% (7 em cache / 3 leituras)
[OK] Eficiência do cache de consulta: 21,9% (7 em cache / 32 seleciona)
[OK] Consultar ameixas de cache de consulta por dia: 0
[OK] Classificações que exigem tabelas temporárias: 0% (0 classificação temporária / 1 classificação)
[OK] Tabelas temporárias criadas no disco: 0% (0 no disco / 32 total)
[OK] Taxa de acertos no cache do thread: 86% (3 criadas / 23 conexões)
[OK] Taxa de acertos no cache da tabela: 26% (128 aberto / 484 aberto)
[OK] Limite de arquivo aberto usado: 25% (259 / 1K)
[OK] Bloqueios de tabela adquiridos imediatamente: 100% (492 bloqueios imediatos / 492)
-------- Recomendações ----------------------------------------- ------------
Recomendações gerais:
Execute OPTIMIZE TABLE para desfragmentar tabelas para obter melhor desempenho
MySQL iniciado nas últimas 24 horas - as recomendações podem ser imprecisas
Reduza sua área total de memória do MySQL para estabilidade do sistema
Variáveis a serem ajustadas:
*** O uso máximo de memória do MySQL é perigosamente alto ***
*** Adicione RAM antes de aumentar as variáveis de buffer do MySQL ***
key_buffer_size (> 9,4 milhões)
Mas estou um pouco confuso sobre como reduzir o uso máximo de memória? Parece basear-se em key_buffer e max_connections, mas também deve haver algo mais envolvido?
my.cnf:
key_buffer = 8M max_allowed_packet = 12M thread_stack = 128K thread_cache_size = 8 max_connections = 20 table_cache = 128 tmp_table_size = 256M max_heap_table_size = 256M join_buffer_size = 256K query_cache_limit = 8M query_cache_size = 64M
Eu tenho tentado ler artigos de ajuste do MySQL, mas eles parecem voltados para pessoas que já sabem o que estão fazendo! Qualquer ajuda seria apreciada. Obrigado!