especificações mínimas para um site de alto tráfego

1

Eu tenho um site que contém uma página PHP que executa 3 consultas SQL simples ao banco de dados MySQL 2 consultas de seleção simples e 1 atualização simples.

A saída HTML com algumas imagens é de 500 KB

O servidor precisa lidar com 50-150 solicitações por segundo.

Você pode me ajudar a decidir as especificações mínimas que o servidor precisa para garantir 100% de tempo de atividade?

    
por Iain 30.04.2011 / 21:41

2 respostas

2

500 KB * 150 req / s = 73 MByte / seg ou 586 Mbit / seg. Essa é uma quantidade significativa de largura de banda: quase 190 TB / mês de transferência. Colocar o hardware no lugar para suportar isso é realmente muito fácil; você provavelmente poderia passar por um VPS (musculoso) se "simples" realmente significa "simples", mas a largura de banda será um obstáculo, já que a maioria dos hosts VPS vai se recusar (ou cobrar taxas exorbitantes por) desse tipo de transferência mensal.

Você quer hospedar tudo sozinho em HA total, disperso geograficamente, ou vale a pena descarregar parte da hospedagem em um CDN?

    
por 30.04.2011 / 23:23
1

É como dizer "Que tipo de carro vai ganhar o Baja 1000?". Depende.

Além disso, 100% de tempo de atividade não é possível. Você pode ficar perto, no entanto

Dito isto, há algumas coisas que você vai querer fazer.

1) Qualquer solução que você coloque em prática, certifique-se de medir tudo o que puder. Com as métricas, você pode determinar se está acima ou abaixo do provisionado e age. Você também pode ver tendências e fazer escolhas informadas antes que as coisas comecem a se quebrar.

2) A redundância é sua amiga. Redundância geográfica (dividindo o aplicativo em diferentes datacenters em diferentes regiões geográficas), horizontal (dividindo os servidores de aplicativos dos DBs e dos servidores de conteúdo) e vertical (alguns pequenos com um balanceador de carga é melhor que 1 grande).

Então, essa é a vista dos pés de 10k.

Especificamente, no seu caso, eu definiria um grupo de servidores que poderia lidar com cerca de 75% do seu tráfego. Possivelmente 2 ou 3 servidores Nginx (minha escolha pessoal, use com o que você está confortável) frente a um par de servidores de banco de dados (1 mestre, 1 réplica somente leitura). Use o servidor da web para fazer proxy de volta para algum tipo de FCGI ou outro servidor de aplicativos. Certifique-se de que os servidores front-end estão servindo suas páginas em cache (você está fazendo o cache, certo?).

Agora, você precisará soltar algum tipo de LB na frente disso. Um single vai ficar bem, porque ...

Você configurará uma cópia disso em outro datacenter. Todas as réplicas somente de leitura de banco de dados, a menos que você queira entrar e obter a configuração de replicação mestre / mestre.

Use o DNS round-robin para dividir o tráfego entre os CNAMES de DNS dos dois balanceadores de carga.

Em caso de falha em um dos controladores de domínio, basta mover o nome de usuário afetado para o local de trabalho.

Isso vai ser caro e difícil de fazer.

Honestamente, a maioria das pessoas só faz isso em um único CD, já que simplesmente não é rentável percorrer todo o caminho.

Pessoalmente, começaria pequeno e verificaria como isso acontece. Deve ser fácil adicionar servidores e, depois de um tempo, você poderá ver onde seu aplicativo precisa da ajuda.

    
por 30.04.2011 / 22:50