domingo, 22 de junho de 2014

MySQL 5.6 consumindo memoria (CentOS)

Ontem (21/06/2014) ao tentar acessar o WHM (CPanel) da minha VPS vi que o serviço estava fora do ar com código de erro 500. Depois de acessar via SSH percebi que o servidor estava quase sem memória RAM disponível. Diante disso ao executar o comando "top" percebi que o MySQL estava consumindo quase toda memória disponível no sistema. A causa do problema não era clara e depois de muita pesquisa e muita paciência encontrei em algum site (não lembro qual era) alguém dizendo que havia desabilitado a variável do mysql performance_schema, então fui até a  documentação do mySQL e vi que essa variável por padrão é desabilitada até a versão 5.5 já na versão 5.6 esta habilitada como padrão. 
Veja se esta habilitada em seu sistema com o seguinte comando:


mysql> SHOW VARIABLES LIKE 'perf%'; 

+--------------------------------------------------------+---------+
| Variable_name                                          | Value   |
+--------------------------------------------------------+---------+
| performance_schema                                  | ON      |
| performance_schema_accounts_size                       | 100     |
| performance_schema_digests_size                        | 200     |
| performance_schema_events_stages_history_long_size     | 10000   |
| performance_schema_events_stages_history_size          | 10      |
| performance_schema_events_statements_history_long_size | 10000   |
| performance_schema_events_statements_history_size      | 10      |
| performance_schema_events_waits_history_long_size      | 10000   |
| performance_schema_events_waits_history_size           | 10      |
| performance_schema_hosts_size                          | 100     |
| performance_schema_max_cond_classes                    | 80      |
| performance_schema_max_cond_instances                  | 1000    |
  
 Na dúvida resolvi desabilitar para ver se o problema era realmente esse então fiz o seguinte:



Abra o arquivo my.cnf (normalmente esse arquivo esta em /etc/my.cnf, depois de uma atualização do mysql no CentOS 6.5 o meu arquivo foi parar em /usr/my.cnf)

# nano /etc/my.cnf

procure por [mysqld]
e adicione a seguinte linha
performance_schema=off

Salve o arquivo e reinicie o mysql e veja se o consumo de memoria agora é baixo.
Nesse momento o mysql e minha VPS consome apenas 3.8% da memoria, bem melhor do que os 43% que estava consumindo antes.

Saiba mais sobre essa  configuração em:
http://dev.mysql.com/doc/refman/5.6/en/performance-schema-startup-configuration.html

Obs: Antes de desabilitar veja se não existe nenhum banco de dados com tabelas corrompidas ou se há algum usuário com query mal escritas que possa estar causando o problema de consumo da memória do servidor.

Uma forma de visualizar os processos que estão em execução no mysql é utilizando o seguinte comando:

# mysqladmin processlist
 Saiba mais em http://dev.mysql.com/doc/refman/5.5/en/show-processlist.html

Nenhum comentário:

Postar um comentário