Estou suspeitando que sua configuração do Apache é o culpado aqui, em vez de sua configuração do MySQL. As configurações atuais do MySQL não devem ultrapassar o total de 50 MB (normalmente, acho que até mais baixo).
No entanto, a partir da configuração do Apache que você postou nos comentários, juntamente com o fato de que o seu VPS fornece apenas 256 MB de memória, vejo que uma configuração de
MaxClients 256
para o Prefork MPM é caminho demais para tal máquina. Em meus servidores Web Squeeze da Debian, vejo cerca de 20MB de uso por fork, então cerca de 15 conexões já consomem toda a memória em sua máquina. Não é difícil obter tantas conexões simultâneas e, como resultado, os processos serão mortos, provavelmente, ou muito swap será usado. Resultado: servidor disfuncional ou resposta de serviço lenta, respectivamente.
Sugiro que você:
-
Reduza significativamente a configuração do seu prefork para, por exemplo, isto:
<IfModule mpm_prefork_module> StartServers 10 MinSpareServers 5 MaxSpareServers 15 MaxClients 15 MaxRequestsPerChild 2000 </IfModule>
E convive com o fato de você não poder atender mais de 8 visitantes simultâneos (geralmente duas conexões de clientes por navegador). Esta é uma limitação da quantidade de memória em combinação com a configuração LAMP escolhida.
-
Mude para o PHP-FPM, configure um pool pequeno e vá para o MPM worker ou até mesmo outro servidor da Web, como o nginx. O worker MPM usa threads que compartilham memória, em vez de forks, que não. Isso deve permitir que você gerencie mais visitantes simultâneos.