MYSQLD consumindo muita memória - Solução

  • Publicado em: 05/03/2016
  • Revisado em: 07/03/2016
  • Categoria(s)Banco de Dados
  • Autor: Ricardo Bernardi
  • Newsletter: Inscreva-se

Se você usa um servidor local de banco de dados, possivelmente tem esse problema e talvez nem tenha percebido. Na verdade eu também não tinha notado essa "anomalia", mas hoje, conversando com um colega desenvolvedor, ele relatou que seu notebook estava com um consumo excessivo de memória e não sabia o motivo.

Orientei que ele usasse o gerenciador de tarefas do Windows e listasse os processos por ordem de consumo de recursos, no caso memória. Foi quando ele disse que o processo que mais estava consumindo RAM da máquina era o MYSQLD.exe, processo do banco de dados MySQL.

mysqld 1

Com algumas pesquisas, descobri que o problema esta no tamanho dos buffers e caches que o servidor usa como padrão em sua configuração. E não demorou muito para encontrar também uma solução para o problema.

O primeiro passo é abrir o arquivo de configuração chamado MY.INI (pesquise esse nome dentro da pasta de instalação do seu servidor para facilitar). Caso queira acessar manualmente, procure em BIN > MYSQL > MYSQLX.X.X (onde X é a versão instalada).

Abra o arquivo MY.INI e procure uma seção chamada [mysqld]. Agora adicione a seguinte linha no final dessa seção: table_definition_cache=400

mysqld 2

 

Salve o arquivo e reinicie o serviço do banco de dados ou o servidor. Entre novamente no gerenciador e confira o resultado, possivelmente o consumo agora irá ficar abaixo de 100 MB, bem melhor que os mais de 400 de antes.

Espero ter ajudado.

Sobre o autor

Ricardo Bernardi

Sou técnico em hardware e desenvolvedor web, e sobre estes dois assuntos comecei a compartilhar aulas e artigos, tornando-me blogueiro em 2008. Em 2010 esse hobby virou profissão, e desde então tenho buscado melhorar e profissionalizar cada vez mais os projetos que mantenho na web.

Comentários

Atualmente temos 9 comentários para este post. Participe você também, clique aqui e comente sobre o assunto.

  • Fábio comentou em

    Parabéns pelo artigo. Procurando pela solução, achei a sua. E não satisfeito, achando que ainda estava consumindo muita memória por um serviço que fica praticamente inativo, pesquisei um pouco mais e encontrei a seguinte solução:

    Procure a string performance_schema no my.ini e sete-a como OFF. Caso não a encontre, adicione ao final do arquivo a seguinte declaração:
    performance_schema=OFF

    Meu consumo de memória com o mysqld.exe agora está menos de 40 Mb.

    Abs.

    Responder
  • Thiago comentou em

    Bom dia!
    Ótimo artigo !

    Mas no meu caso não deu certo... estou a desenvolver um sistema web , e o processo do navegador que eu uso para testar o sistema php+mysql

    começa aumentar cada vez mais o consumo de memoria, as vezes chegando a ficar 3GB em um processo!

    às vezes também o uso da cpu vai a 100% em alguns instantes.

    o que pode ser ? Conexão com Banco aberta? varias conexões com o mesmo?

    Obrigado !

    Responder
  • Lauro Cézzar comentou em

    Sou inscrito no seu canal do youtube...e pra variar você é fera no assunto...Resolvo muitos problemas do dia-a-dia com suas dicas. Obrigado!

    Responder
  • Bruno Mendes comentou em

    Boa tarde, Ricardo gostaria de saber se essa sua solução tem algum efeito colateral, se gera alguma perda de desempenho ou coisas do tipo.

    Muito obrigado

    Responder

Deixe seu comentário