O MySQL diminui gradualmente até a reinicialização do servidor

3

O desempenho das páginas no meu site que acessam meu banco de dados mysql diminui com o tempo até que eu reinicie o servidor. (Páginas estáticas não são afetadas.) Reiniciar o mysqld por si só não ajuda, mas a reinicialização de todo o servidor ajuda. Eu tentei vários ajustes de desempenho do MySQL e o cache ativado, nenhum dos quais ajudou.

Inicialmente é muito rápido, mas depois de alguns dias se torna muito mais lento, e eventualmente se torna insuportavelmente lento. Todas as operações mysql que eu executo a partir da linha de comando estão perfeitamente bem, incluindo conexão com o mysql, conexão a um banco de dados e execução de consultas. O log de consultas lentas não mostra nada de anormal. Mas qualquer página no meu site que se conecte com o mysql é executada muito lentamente.

Se eu reiniciar meu servidor, tudo corre rápido novamente, até que desacelere novamente.

my.cnf:

max_connections = 500
query_cache_size = 10M
tmp_table_size = 16M
max_heap_table_size = 16M
thread_cache_size = 4
innodb_buffer_pool_size = 7G
symbolic-links=0

topo, servidor até 3 dias:

topo,servidor5minutosapósareinicialização:

Quais são alguns passos que devo seguir para isolar e corrigir esse problema?

    
por Eric Yang 06.06.2013 / 23:26

4 respostas

-1

Parece que um processo de firewall OSSEC foi o culpado - ocupou muito CPU e atrapalhou tudo. Quando isso foi reconfigurado, tudo correu bem novamente.

    
por 12.06.2013 / 15:40
1

Você está com 76% de espera do sistema, provavelmente devido a uma troca pesada.

  1. use mysqltuner.pl para descobrir quais são suas variáveis que afetam uso de memória
  2. pressione "m" quando na parte superior para ver o que comeu a memória
  3. use free -m para ver quanto é armazenado em cache
  4. use iotop para ver quem está comendo o IO
por 09.06.2013 / 10:43
1

Parece que você está trocando mal.

Seu problema pode ser o buffer duplo. Tente adicionar isso ao seu my.cnf (e reiniciar seu servidor mysql, obviamente):

innodb_flush_method = O_DIRECT

E reduza sua capacidade de troca no nível do SO, assim:

echo 0 > /proc/sys/vm/swappiness
    
por 09.06.2013 / 22:38
-1

Em suas páginas da web você está fechando sua conexão de banco de dados e liberando a memória que você usou? Se não, você deveria estar.

Dê uma olhada nas especificações do sistema em 3 dias - o uso do sistema e da memória está em alta, com recursos limitados. Como suas consultas de linha de comando estão funcionando bem sem atraso, mas suas páginas da web estão lentas, você tem um vazamento de memória que permanece aberto, provavelmente no espaço de memória do servidor da web (já que a linha de comando funciona bem, não no mySQL). / p>

Marcar H

    
por 12.06.2013 / 16:50