1) Experimente ps aux
e analise /proc/$pid/status
e /proc/$pid/smaps
2) Adicione mais memória.
3) 256MB é claramente muito pouco, dada a sua carga atual.
Estou usando o hosting de 256MB do slicehost.com para o meu site.
Infelizmente, está trocando quase o tempo todo. Quando eu digito no console free
eu recebo algo como:
total used free shared buffers cached
Mem: 251140 228968 22172 0 596 17356
-/+ buffers/cache: 211016 40124
Swap: 524284 60944 463340
Se eu reboot
do servidor, a troca pára por um pouco e depois começa novamente.
Como posso:
1) descobrir quais processos / funções causam a troca
2) Como corrigir o problema
3) descobrir se 256MB é muito pouco e seu tempo para atualização em vez de otimização
obrigado
// usando o CakePHP / apache
1) Experimente ps aux
e analise /proc/$pid/status
e /proc/$pid/smaps
2) Adicione mais memória.
3) 256MB é claramente muito pouco, dada a sua carga atual.
Você está usando o apache?
caso você esteja, faça o seguinte:
Digamos que você esteja consumindo 20 Mb por processo.
Depois, faça uma matemática simples. coloque de lado 156Mb para o SO e divida os outros 100 pela quantidade de memória que um apache está consumindo: 100/20 = 5
Isso lhe dará quantos processos de apache você pode ter simultaneamente.
Em seguida, vá para a configuração do seu apache (/ etc / apache2) e encontre dentro do seu arquivo de configuração principal as seguintes configurações: - StartServers - ServerLimit - MaxClients
E defina todos eles para 5.
Tenha em mente que 256 é muito pequeno para uma configuração do Apache. Eu não usaria o apache com menos de 2 Gb de memória.
Para diagnosticar quem está brigando, sugiro instalar no topo . Em cima mostrará as mudanças em um nível de processo. Para uma rápida demonstração, eu preparei o MySQL para usar toda a memória que ele tinha disponível, então trabalhei com alguns arquivos grandes para forçar a memória do MySQL a ser trocada em favor do cache dos meus arquivos de teste grandes. Abaixo está uma captura de tela mostrando o MySQL tentando ler a memória de volta do swap (imagem em vez de texto para que você possa ver os destaques).
Observe os números majflt e minflt quando o MySQL tenta acessar algo que foi trocado. Você também pode ver outras estatísticas de memória, e realmente qualquer coisa que você gostaria de obter de cima, ps, etc. {apt-get, yum} instalar no topo .
É PHP.
Adicione mais memória ou reduza o número de processos PHP simultâneos
Não é muito.
Você pode diminuir o swappiness, primeiro verificar o valor atual com cat / proc / sys / vm / swappiness e depois alterar o valor sysctl -w vm.swappiness = 10
Além disso, você pode sempre desabilitar a troca com sudo swapoff a ou editar / etc / fstab
Hoje em dia eu raramente uso swap, mesmo em pequenas máquinas virtuais como a sua.
Você pode fazer com que o Apache use menos memória, mas não será fácil.
MaxClients 64
) e um número moderado de threads (por exemplo, ThreadsPerChild 32
). Por que você não tenta descobrir quais processos estão consumindo a quantidade de memória quando a troca pesada ocorre ao emitir
topo
Depois de descobrir qual processo está levando a boa parte da memória, deve ser o primeiro passo de como corrigir o problema. por exemplo. se a consulta do mysql estiver ocupando muita memória, talvez você decida limitar a memória do servidor mysql ou talvez você faça uma otimização de consulta
bem 256MB é realmente parece pequeno. Desde que você mencionou o apache e eu sei que o apache, por padrão, vem com o modo prefork de operação, ele pode ser o verdadeiro culpado. Considere executar o apache no modo de trabalho com apenas os módulos necessários iniciados (geralmente o apache vem com vários módulos iniciados automaticamente) ou substituindo o apache completamente pelo Nginx leve.
Tags php linux apache-2.2 swapping