Tendo problemas para manter um servidor Centos de 1GB de RAM em execução

1

Esta é minha primeira vez configurando um servidor VPS e estou tendo alguns problemas. Estamos executando o Wordpress em um servidor Centos de 1GB configurado pela internet (pesquisa online). Nenhuma consulta personalizada ou qualquer coisa louca, mas fechando em posts de 8K. Em intervalos arbitrários, o servidor simplesmente desce. Do lado do cliente, apenas diz "Carregando ..." e girará mais ou menos indefinidamente. No lado do servidor, o shell será bloqueado completamente. Nós temos que fazer um hard reboot a partir do painel de controle e então está tudo bem.

Assistindo "top", vejo o intervalo entre 35 - 55% de uso de memória em geral e picos ocasionais em torno de 80%. Quando o vi cair, havia cerca de 30 a 40 processos do Apache mostrando o que empurrava a memória além da borda. "error_log" informa que maxclients foi atingido antes de cada instância de reinicialização. Eu tentei mexer com isso, mas sem sucesso.

Acho que provavelmente precisaremos elevar o servidor para o próximo nível de RAM, mas com ~ 120 mil exibições de página por mês, parece que é um pouco exagerado, já que estava funcionando razoavelmente bem em um servidor compartilhado antes.

Alguma ideia? Valores httpd.conf e my.cnf para adicionar? Vou atualizar isso com os atuais, se isso ajudar.

Obrigado antecipadamente! Esta tem sido uma experiência de aprendizado divertida e importante, mas, no geral, bastante frustrante!

Editar: instantâneo superior rápido:

top - 15:18:15 up 2 days, 13:04,  1 user,  load average: 0.56, 0.44, 0.38
Tasks:  85 total,   2 running,  83 sleeping,   0 stopped,   0 zombie
Cpu(s):  6.7%us,  3.5%sy,  0.0%ni, 89.6%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   2051088k total,   736708k used,  1314380k free,   199576k buffers
Swap:  4194300k total,        0k used,  4194300k free,   287688k cached
    
por joshcanhelp 28.02.2011 / 02:45

3 respostas

3

Se o seu servidor não conseguir lidar com processos 30-40 httpd (não é possível), então não deixe. Eu entro em muitos detalhes sobre a configuração do LAMP em meu responder a esta pergunta . Os exemplos que dou são para um VPS de 512 MiB, portanto não copie cegamente a configuração "pela Internet". :)

Versão resumida: redimensione as variáveis httpd MaxClients e ServerLimit para impedir que mais de 30 processos de httpd sejam acionados. Eu começaria com algo como 10 ou 15, dependendo do tamanho médio dos seus processos, e quanto espaço você tem dado ao MySQL. Observe que o comportamento do httpd será recusar solicitações quando todos os processos do cliente estiverem ocupados.

    
por 28.02.2011 / 17:57
3

Verifique se você está usando qualquer memória swap quando os lockups acontecem (free e vmstat). Se você tiver o MaxClients configurado muito alto, o que acontecerá durante picos de tráfego será o uso de memória e a carga do servidor aumentará lentamente até que você fique sem RAM e comece a usar o swap. Isso faz com que os clientes Apache iniciem o carregamento de / para a memória swap que apenas mata o desempenho, o servidor carrega os foguetes e o servidor "trava".

Idealmente, você deseja definir MaxClients de forma que nunca comece a usar memória swap. O valor exato dependerá das suas configurações do Apache e do que você está veiculando. Como você vê de 30 a 40 processos durante os picos de tráfego, eu começaria por volta de 30 e veria se isso impede o uso de swap (supondo que seja a origem do problema).

    
por 28.02.2011 / 03:00
0

Parece que o seu sistema está debatendo .

Para depurá-lo, primeiro desativo a troca. Dessa forma, você estará recebendo erros de memória em vez de travamentos causados pela troca constante de páginas de memória. Você verá muito mais facilmente o que está causando problemas.

Eu também:

  • limite de memória PHP disponível - opção memory_limit no php.ini para 64MB
  • limite MaxClients para cerca de 10;

Isso forçaria o seu Apache a não usar mais do que 700MB de memória (10 * 64 + memória para o httpd). Se um script precisaria de mais memória, ele falharia, e não derrubaria seu servidor.

Quando você descobrir o que está causando o problema, poderá ativar a troca. Mas não mais do que cerca de 1/4 da sua RAM. Desta forma, a memória não utilizada pode ser trocada, mas não o suficiente para causar uma surra.

    
por 28.02.2011 / 16:58