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