
Vários scripts php são executados via crontab no meu CentOS 6.5, cada script php contém pelo menos uma solicitação de banco de dados. Dependendo do tamanho e tipo do objeto php, muita memória física é alocada pelo serviço mysqld em alguns casos específicos.
Às vezes, há apenas 15 MB de memória livre de 1,7 GB, a memória swap também é alocada talvez para 95% de uso. Para liberar a memória do servidor a única solução alternativa é reiniciar o servidor mysqld, mas depois de alguns dias a memória está quase cheia novamente.
Por ignorar a reinicialização do mysqld, tentei liberar o cache de consulta usando RESET QUERY CACHE;
e FLUSH QUERY CACHE;
mas nada foi alterado no status da memória. Também tentei executar, sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
mas o status da memória é o mesmo novamente.
Você sabe como liberar a memória física e virtual, por exemplo, após cada execução de script sem reiniciar o servidor mysql?
Responder1
Se for o MySQL consumindo toda a memória, você terá que diminuir seus valores ou aumentar a RAM do servidor. Se você disse ao MySQL que ele pode ter 16 GB de RAM, mas apenas 8 GB estão disponíveis, bem, então as coisas acontecem.
Você não organiza uma festa para 20 pessoas em um quarto de hotel comum apenas para descobrir que o quarto é muito pequeno e tenta novamente na noite seguinte, esperando que você possa acomodar 20 pessoas lá. Você reserva uma sala maior ou convida menos pessoas.