A disseminação de seus servidores não apenas consumirá mais recursos

2

Estou executando um site pesado de atualização em tempo real. A quantidade de recursos necessários por usuário é bastante alta, e podemos dar um exemplo.

Setup

Toda visita
A aplicação é php / mysql assim em cada visita estática e conteúdo dinâmico é carregado.
Recursos: apache, php, mysql

Cada segundo (não mais do que um segundo será muito longo)
O site precisa ser atualizado em tempo real para que, a cada segundo, haja uma chamada ajax que atualize o site.
Recursos: jQuery, apache, php, mysql

Gastos médios para usuários únicos (gastando um minuto e visitando 3 páginas)

  • Apache: +/- 63 solicitações / respostas que atendem conteúdo estático e dinâmico (img, css, js, html)
  • php: +/- 63 solicitações / respostas
  • mysql: +/- 63 pedidos / respostas
  • jquery: +/- 60 solicitações / respostas

Optimization

Eu quero otimizar esse processo, mas acho que talvez seja o mesmo no final.

Antes de implementar e testar (o que levará semanas) eu queria ter algumas segundas opiniões de vocês.

Toda visita
Quero começar com o nginx na frente e trabalhar como proxy para fornecer o conteúdo estático.
Recursos:

  • Dinâmico: apache, php, mysql
  • Estático: nginx

Isso espalhará muito a carga no apache.

A cada segundo
Para o script que carrega a cada segundo, quero configurar o javascript do lado do servidor Node.js com nginx na frente.
Eu quero configurá-lo que jquery faz um pedido uns minutos, e node.js transmite os dados para o cliente a cada segundo. Recources: jQuery, nginx, node.js, mysql

Gastos médios para usuários únicos (gastando um minuto e visitando 3 páginas)

  • Nginx: 4 solicitações / respostas que atendem principalmente conetent estático (img, css, js)
  • Apache: 3 solicita apenas as páginas
  • php: 3 solicita apenas as páginas
  • node.js: 1 solicitação / 60 respostas
  • jquery: 1 pedido / 60 respostas
  • mysql: 63 pedidos / respostas

Questions

Como você pode ver na otimização, a carga do Apache e do PHP são removidos e colocados em nginx e node.js. Estes são conhecidos por sua pegada leve e bom desempenho.

Mas estou tendo minhas dúvidas, pois ainda existem 2 programas extras carregados na memória e eles consomem cpu.

Portanto, é melhor ter menos programas que façam o trabalho ou mais. Antes de passar muito tempo fazendo isso, gostaria de saber se valerá a pena.

    
por Saif Bechan 02.04.2010 / 09:58

2 respostas

0

Aqui estão algumas dicas para ajudá-lo.

  1. Verifique seus URLs com tools.pingdom.com. Isso dará uma ideia dos tempos de carregamento e do que está demorando mais.
  2. Dê uma segunda olhada no link . Isso lhe dará praticamente as mesmas informações que o PingDom, mas também permite que você determine onde você pode melhorar o desempenho ainda mais.
  3. Mova todo o seu conteúdo estático (imagens, css, javascript, etc.) para um CDN. Isso vai te ajudar muito.
  4. Se você usa bibliotecas ajax como jQuery, Scriptaculous etc., recomendamos transferi-las para o Google com o link . me ajudou muito.
  5. Se você ainda não o fez, recomendo manter o MySQL isolado do seu webend para desempenho em uma unidade diferente.
  6. Por fim, nas minhas experiências, para o apache2, eu uso o módulo worker para que ele seja mais baseado em memória do que o uso do processador, de modo que isso me ajudou um pouco.
por 02.04.2010 / 15:14
0

Observe que várias cópias da mesma biblioteca executável ou compartilhada têm seus segmentos de código compartilhados. Isso significa que mesmo que você execute execuções de 50 php, o executável do php só foi lido do disco uma vez e só aparece na memória uma vez. Cada execução tem seu próprio segmento de dados, mas isso terá que acontecer independentemente de como você distribui os dados por vários programas.

Portanto, a resposta, como em tantas questões de otimização, é "depende". A maneira mais fácil de descobrir suas especificidades é executar alguns testes de benchmark com as configurações que você está considerando em cargas moderadas a pesadas, e comparar as cargas totais de CPU / memória / disco / rede.

    
por 02.04.2010 / 13:49