Além das idéias que você já tinha, você poderia adicionar mais memória RAM, embora isso pareça ser um band-aid caro a curto prazo.
A longo prazo, sua melhor aposta provavelmente será abandonar o OpenVZ.
Para o OpenVZ, uma implementação de virtualização baseada em contêiner, parece que o host e todos os convidados estão compartilhando o cache do sistema de arquivos. Isso soa paradoxal quando se fala em virtualização, mas isso é realmente um recurso do OpenVZ.
Também faz sentido. Como apenas um kernel está sendo executado, é possível se beneficiar do compartilhamento das mesmas páginas de cache do sistema de arquivos na memória. E, embora pareça benéfico, acho que uma configuração aqui realmente sofre com o desempenho dela. Aqui está o porquê: minhas máquinas não estão realmente compartilhando nenhum arquivo no disco, então não posso me beneficiar dele.
Várias máquinas OpenVZ estão executando o MySQL com tabelas MyISAM. O MyISAM depende do cache do sistema de arquivos do sistema para o armazenamento em cache de arquivos de dados, ao contrário do buffer pool do InnoDB. Além disso, algumas máquinas virtuais são conhecidas por realizar operações de E / S pesadas e grandes no mesmo sistema de arquivos no host.
Para fins de teste, executei cat *.MYD > /dev/null
em algum banco de dados grande em uma máquina, vi o cache do sistema de arquivos diminuindo em outro, monitorado por htop
. Isso essencialmente libera todo o cache útil do sistema de arquivos em guests (FIFO) e libera os caches do MySQL nos guests. Estou certo em minha análise até aqui?
Agora os usuários estão reclamando que o MySQL é muito lento. E isso é. Algumas consultas simples de SELECT
demoram vários segundos em que o tempo de E / S do disco é muito usado por outras máquinas.
Então, basta colocar:
Existe uma maneira de evitar que o cache do sistema de arquivos seja apagado por outras máquinas virtuais na virtualização baseada em contêiner?
Em vez de migrar para o KVM ou o InnoDB (veja abaixo), pode haver uma opção de confuração que estou perdendo.
Algumas ideias:
man vzctl
) Se não, acho que minhas alternativas são:
balloon
. Software do sistema: Proxmox (agora 1.9, pode ser atualizado para 2.x). Um grande LV atribuído para as VMs.
Tags mysql openvz memory linux-kernel