Recomendações de especificações do servidor

1

Atualmente tenho um VPS Linode 512 com Ubuntu 10.04 LTS (32 bits).

Recentemente, abri meu site, o que atrai muitos usuários de redes sociais, e tenho atingido alguns limites de CPU ultimamente.

Estou conseguindo cerca de 20k usuários por dia, hoje tive que reiniciar o apache e os processos do MySQL várias vezes, já que o uso da CPU era muito alto, mal consegui digitar o comando.

Eu quero redimensioná-lo, mas não tenho certeza se há algo que eu possa fazer para me ajudar a resolvê-lo.

Codificando-a, não tenho nada a alterar, estou atualmente executando uma quantidade mínima de consultas no servidor SQL (no localhost) e fiz tudo o que podia para melhorar o código.

Estou executando o GZip e é importante dizer que meu objetivo principal do site é veicular imagens.

    
por jamm1ng 01.05.2011 / 20:53

4 respostas

2

I'm running GZip and it's important to say that my main purpose of the site is to serve images.

Isso aí pode ser o seu problema. O Gzip certamente ajudará com conteúdo pesado em texto, já que ele comprime facilmente, no entanto, as imagens já estão compactadas, e tentar comprimi-las ainda mais com o gzip é um exercício de futilidade. Desligue o gzip e veja se isso diminui a carga da sua CPU.

Se isso não acontecer, então o próximo passo é provavelmente que você deve dividir seu banco de dados para um segundo linode 512. Eu faria isso antes de redimensionar seu Linode atual. Quando você implantar a segunda máquina, verifique se ela está no mesmo datacenter, mas em um host diferente. Dessa forma, o Apache e o MySQL não competirão pelo disco IO. Além disso, tenha em mente que você deve usar a rede privada de back-end da Linode para comunicações entre os dois servidores.

    
por 01.05.2011 / 21:11
1

today I had to restart the apache and mysql processes several times as the cpu usage was too high

Então você não configurou seu servidor corretamente. Garantir que você tenha capacidade suficiente para gerenciar o servidor é essencial. E em bolas de neve de desempenho ruim de um servidor web - então você acabou com centenas de pessoas incapazes de usar seu sistema. Jogar hardware no problema é uma solução temporária - mas você precisa aprender muito mais sobre como ajustar e gerenciar seu servidor - muito mais do que poderia ser fornecido em uma resposta aqui.

No entanto, sim, há provavelmente algumas conquistas rápidas - mas você forneceu nenhuma informações úteis sobre como o servidor está configurado, nem o padrão da carga de trabalho. Tomando um palpite aleatório, sugiro que você dê uma olhada no cache de conteúdo - especialmente em proxies. Vá ler algumas coisas online de Mark Nottingham.

Você obviamente não tem idéia de quais partes do seu sistema estão causando seus problemas - você precisa começar a registrar% D em seus logs do Apache e analisar os dados para descobrir onde estão os problemas de desempenho; Dica: alta CPU em um servidor fornecendo apenas conteúdo estático é muito incomum - você pode pensar que é de onde vem a carga - mas duvido.

    
por 02.05.2011 / 00:26
0

Concordo com o symcbean. Obter alguns dados sobre a causa real do problema seria um bom primeiro passo, e o armazenamento em cache pode fazer com que servidores leves estendam-se muito longe.

Dê uma olhada no Munin (e habilite os plugins do MySQL que não estão ativados por padrão) para as estatísticas.

Além de definir cabeçalhos de cache (e há um artigo da Mark Nottingham aqui: link ), o verniz pode ficar na frente de Apache e armazene em cache o conteúdo estático no disco ou na memória, reduzindo a carga no Apache.

Outros argumentariam que o Lighttpd ou o Nginx seriam boas alternativas ao Apache para conteúdo estático.

Se você quiser configurações de linha por linha para o Munin ou o Varnish no Ubuntu 10, me avise e eu as publicarei.

    
por 02.05.2011 / 02:46
0

A melhor maneira de melhorar seu código é ... que seu código não seja executado.

tente usar um servidor web com pouca memória, lighttpd ou nginx.

experimente que seu aplicativo gere conteúdo estático para ser veiculado, e gere novamente o código quando uma atualização for feita, dessa forma seu servidor web fará o melhor que pode, serve conteúdo estático, verifica seus cabeçalhos em seu html e imagens servido.

    
por 17.06.2011 / 01:16