Como configurar o servidor para lidar com grande tráfego?

1

Agora eu tenho mil usuários on-line. Mas meu site é muito lento. Eu poderia ter 8000 usuários simultâneos, mas o servidor não pode lidar com o tráfego e estou perdendo visitantes.

Meu servidor é um servidor VPS:

CPU dedicada 7,2 GHz

RAM 4512MB

O uso de memória está bem abaixo dos recursos disponíveis. (agora 632 MB) O que devo fazer? Devo configurar o servidor apache? Se sim, como? E quanto ao cache, talvez memcached?

Este é um servidor virtual, construído a partir de nós, cada nó representando 600 Mhz cpu e 376 MB de RAM.

Estou executando um site sobre ele construído com php e mysql.

    
por Maxxon 11.08.2011 / 20:38

2 respostas

3

Benchmark, benchmark, benchmark. Essa é a única solução. Há um milhão de coisas que podem tornar um site lento. Aqui está o que eu faria:

  • Carregue o Firefox com o Firebug. Verifique o painel líquido quanto aos tempos de carregamento de sua solicitação principal. Se houver muito tempo para "conexão", você pode ter problemas de rede ou largura de banda, ou o Apache não pode lidar com muitas solicitações ao mesmo tempo. Se houver um longo tempo de "espera" ou "transferência", seus scripts PHP podem ser os culpados. Eles demoram muito para renderizar a página.
  • Ao lidar com o PHP, o primeiro suspeito é geralmente o seu (Meu) servidor SQL. Se você usa uma biblioteca SQL central, não deve ser muito difícil fazer benchmark de suas consultas. Acompanhe quantas consultas sua página precisa e quanto tempo essas consultas demoram. Compare isso com o tempo total de renderização da página. Se você tiver um aplicativo antigo que use funções comuns de mysql(i)_ em todo o lugar, salte para baixo dois bullits.
  • Se o problema é com o MySQL, então o primeiro suspeito é geralmente índices apropriados. Execute um EXPLAIN em todas as suas consultas e veja se os índices são usados. Definir índices apropriados. Re-benchmark. AE / S também é uma causa comum de lentidão do MySQL (use um cache de consulta maior, emita menos consultas (cache de aplicativos), ajuste suas configurações do MySQL ou simplesmente divida o servidor da Web e o SQL Server.
  • Se o problema for o próprio PHP, carregue o xdebug e execute a sua página através do profiler (certifique-se apenas de sua solicitação ou você pode facilmente matar seu servidor). Carregue o despejo no KCacheGrind e descubra onde seu aplicativo passa o tempo todo. Refatorar.

Isso é exatamente o que eu faria. Cada passo depende muito dos resultados que você obteve na etapa anterior. Não há conselhos genéricos que possamos dar a você. Apenas faça benchmark, benchmark, benchmark e refatorie seu código e configuração de servidor de acordo.

    
por 11.08.2011 / 22:31
1

Meu site estava começando a chegar ao ponto em que o desempenho estava sofrendo um pouco. Coloquei o memcached em algumas das minhas páginas mais "complicadas" e funcionou melhor do que eu imaginava. Eu tinha algumas páginas que demoravam 0,5 segundos para analisar e uma que demorava 3 segundos para analisar (que vergonha para mim, eu sei). Passei menos de uma hora colocando memcached em alguns desses lugares-chave e tudo agora é analisado em menos de 0,01 segundo. Além disso, notei que a minha média de carga é muito baixa, pois não há muitas consultas do mysql para lidar. Eu não poderia recomendar o memcached mais:)

    
por 12.08.2011 / 19:15