Escalabilidade regular da CGI na Web em hardware moderno?

2

Estou envolvido em um projeto para atualizar um sistema de controle de tempo que permaneceu basicamente inalterado por 10 anos. Ele roda Linux / Apache / CGI / MySQL3 em um HP Proliant Pentium, ou seja, com uma combinação de alguns perl & bash "here documents" (com uma biblioteca C para analisar / remover solicitações de entrada) de uma maneira de processo por solicitação.

A empresa cresceu de cerca de 10 pessoas em 2001 para mais de 750 hoje, e planeja crescer para vários milhares nos próximos anos. Existem alguns problemas de desempenho com o aplicativo, mas após a investigação, os problemas de desempenho são relacionados a tabelas com muitos milhões de entradas de tempo, claramente faltando índices e resultados não paginando (fazendo com que páginas grandes voltem).

A utilização nos processos do Apache e dos pedidos simplesmente não leva muito tempo ou memória da CPU; o cartesiano junta-se a tabelas de milhões de registros, mas consome lotes e, segundo consta, até bloqueia periodicamente no final do mês.

Eu quero abordar os problemas com essas abordagens:

  1. Adicione índices e ajuste um pouco o esquema.
  2. Atualizar hardware.
  3. Atualize para o MySQL mais recente
  4. Atualize a interface do usuário para um pouco menos da antiga escola.

Eu não vejo nenhum motivo para reescrever completamente um programa CGI em uma arquitetura em processo. Eu acho que o CGI aguentará perfeitamente bem . Realisticamente você teria alguma preocupação com uma arquitetura CGI de processo separado, considerando os avanços que tivemos na última década em hardware? A situação é: podemos gastar vários $ Gs em um novo servidor ou muitos $ 10Gs em uma reescrita.

    
por Jé Queue 17.10.2010 / 01:06

2 respostas

1

algumas reflexões:

  • sim, atualize o hardware, apenas para evitar a dependência de peças de reposição difíceis de encontrar.
  • indexar corretamente o banco de dados pode facilmente reduzir o tempo por um fator de 100 ou 1000 ou até mais, especialmente em tabelas com vários milhões de registros.
  • ir do GCI para outra arquitetura evita o tempo de inicialização do processo, nada mais. É uma grande diferença ao fazer centenas ou milhares de solicitações por segundo, mas esse não parece ser o seu caso.
por 17.10.2010 / 19:38
2

Eu realmente não acho que há um problema, basta comprar o novo hardware.

Mesmo que faça decida reescrever o aplicativo mais tarde, você realmente implantaria seu novo aplicativo em hardware antigo? Eu duvido, então de qualquer forma você precisa investir no hardware.

E, com alguma sorte (e alguns testes de desempenho), o novo hardware (após sua classificação 1 & 3 na sua lista) ficará bem e você poderá ignorar muitos $ 10Gs reescritos

    
por 17.10.2010 / 01:51