MySQL não usa mais a RAM especificada

2

Alguns dias atrás eu obtive uma nova configuração de máquina rodando CentOS 5.6 (64bit), with 12GB ddr3 ram, 4x SAS 15k rpm drives in RAID10 . Nesta máquina eu estou executando a versão do servidor MySQL: 5.1.39-maria-beta-ourdelta67-log , que eu tenho usado em servidores anteriores, bem como com ótimos resultados. Este é o meu link my.cnf

Agora, antes desta manhã, o MySQL sempre usava a RAM especificada que eu tinha configurado em my.cnf (cerca de 95% dos 12GB). Instantaneamente depois de olhar para o mysql, eu checava 'top', e 95% do RAM seria usado.

Mas agora, depois de reiniciar o MySQL eu vejo isso quando eu clico em 'top'.

Mem: 12289856k total, 1884924k used, 10404932k free, 39660k buffers

Apenas cerca de 15% é usado. Esse número sobe um pouco devagar, mas antes ele sempre consumiria toda a RAM.

O que poderia estar causando isso?

Atualização: Desde que eu reiniciei o mysql, ele estava usando lentamente mais e mais memória RAM, até um ponto em que ocupava todos os meus 12GB, e toda a máquina era travada. Eu tive que reiniciar o Linux para colocá-lo novamente online. Seu agora em 1.8gb novamente e lentamente subindo. Todo o gerenciamento de memória RAM parece ser ruim, já que leva mais memória RAM, mas nunca a libera.

Alguma idéia do que pode estar causando isso?

    
por Mr.Boon 07.07.2011 / 13:51

2 respostas

0

Parece estar resolvido agora. Eu tive que reconstruir todos os índices, e depois que o uso da memória mysql voltou ao normal. Embora eu tenha feito uma verificação do mysql em todas as tabelas e índices antes, e não encontrei nenhum erro, a reconstrução dos índices corrigiu o problema.

Obrigado por todas as sugestões caras!

    
por 08.07.2011 / 11:24
0

Parece que você está executando uma versão beta, que costuma ser problemática. No entanto, só porque você especifica qual memória usar, isso não significa que o sistema operacional irá alocá-lo. Quando o mysql pede o sistema operacional para a quantidade de memória, digamos 8GB você tem, ele recebe uma espécie de nota promissória: "sim, claro, vá em frente, você pode ter 8GB".

Em seguida, o aplicativo (mysql, neste caso) gerencia seu próprio heap e a quantidade de memória usada. O uso aumenta à medida que o heap aumenta, à medida que o número de consultas aumenta. É por isso que você vê um aumento ao longo do tempo.

O motivo pelo qual seu servidor bloqueado pode ser de várias causas, como outros aplicativos que usam mais memória do que o esperado, ou simplesmente há um bug no mysql (que eu acho improvável).

    
por 07.07.2011 / 16:10