Que tipo de servidor eu preciso para lidar com 10 milhões de pedidos e consultas mySQL por dia? [fechadas]

18

Sou novato em administração de servidores e estou procurando um poderoso serviço de hospedagem para hospedar meu novo site. Este site é basicamente um back-end de um jogo on-line móvel, e será:

  • processa até 10 milhões de solicitações HTTPS e consultas MySQL por dia
  • armazena até 2000 GB no disco rígido
  • transfere provavelmente 5000 GB de dados por mês
  • é executado em PHP e mySQL
  • tem 10 milhões de registros no banco de dados mySQL, para cada registro existem de 5 a 10 campos, cerca de 100 bytes cada

Eu realmente não sei que tipo de servidor eu preciso para lidar com esses requisitos, minha pergunta é:

  1. Qual CPU / RAM eu preciso para um servidor dedicado ou VPS?
  2. Quais empresas de hospedagem podem oferecer esse tipo de servidor dedicado ou VPS?
  3. E a computação em nuvem? Eu pesquisei o Amazon EC2, mas parece complicado para mim. E eu entrei em contato com a Rackspace, mas estranhamente eles disseram que o Cloudsites não é adequado para minhas necessidades. Gostaria de saber se existe outra empresa de hospedagem na nuvem.
  4. Algum outro método alternativo?
por Calvin 19.03.2010 / 07:52

2 respostas

31

Um desktop barato?

Vamos entrar na matemática.

  • 10 milhões de solicitações.
  • Isso decompõe para 416667 solicitações por hora.
  • Isso decompõe para 6944 solicitações por minuto.
  • Isso decompõe para 116 solicitações por segundo.

Dobre isso (carga de pico) e falamos de uma carga que um desktop quad core barato pode manipular se as consultas forem simples o suficiente, e você não diz o quão complexas elas são.

  • 5000 GB por mês é trivial - seriamente, a mesma matemática se aplica.
  • Isso decompõe-se em 208 GB / dia
  • Isso decompõe-se em 8 GB / hora
  • Isso decompõe-se em 148 MB / minuto
  • Isso se reduz a 2,5MB / segundo, 25Mbit. Duplo para pico - 50Mbit, trivial para qualquer centro de hospedagem. Vai te custar, no entanto.

  • Armazene 2000 GB no disco rígido. Isso é 2x2000 GB discos rígidos em um RAID? A menos que: seja para o banco de dados, tenha muito IO complexo, então é algo entre algumas dúzias de discos e um monte de discos SAS de 15 GB por 15.000 RPM em um RAID 10 (cerca de 60 discos) para obter a E / S necessária pergunta não é responsável sem muito mais informações sobre padrões de acesso a dados.

  • Executa PHP e MySQL - Meu celular pode fazer isso;) A questão é quão complexo é o aplicativo. MySQL MAIO ou NÃO PODE ser uma solução aceitável aqui, BTW l. - Isso exigiria mais testes. Há uma razão pela qual algumas pessoas ainda usam outros bancos de dados comerciais maiores.

  • Qual CPU / RAM eu preciso para um Servidor Dedicado ou VPS?

Alguém poderia dizer que isso depende da lógica (quanto cálculos na parte PHP, inteligência ou falta de programadores e muitas outras questões.

Sério, essa é uma configuração não trivial. Peça para alguns especialistas investigarem isso.

Basicamente, você precisa descer e fazer sua lição de casa. Muitas das perguntas não são respondidas neste formulário. Especialmente porque você não parece se importar com seus dados ...

  • Backups?
  • Nenhum plano de contingência? Quero dizer, servidores morrem - então você está bem com o site sendo desligado por dias enquanto a substituição é configurada?
por 19.03.2010 / 08:01
7

Para adicionar um pouco da minha experiência, que pode ser útil:

  • Como a TomTom mencionou, é difícil / impossível fornecer especificações exatas, já que muito depende do design e da implementação do seu aplicativo. O hardware que me fornece ou outra pessoa X pedidos por segundo pode não funcionar bem para você.
  • Eu tenho um servidor MySQL dedicado de baixo custo (Intel Core2 Duo E4600 2,40 GHz, 4 GB de RAM) atendendo uma média de 100 solicitações / seg (próximo a 10 milhões / dia) com uma taxa de ociosidade da CPU de 90%. Além de alguns ajustes básicos na configuração, ele está funcionando bem devido à leitura pesada (+ 95% de leituras) e o conjunto de registros ativos é facilmente contido na memória. Considere o tamanho do seu conjunto ativo ao escolher a quantidade de RAM do servidor, pois isso pode fazer uma grande diferença. Certifique-se de entender a diferença entre o tamanho do banco de dados e o tamanho do conjunto de registros ativo. Por exemplo, meus bancos de dados totalizam ~ 7 GB, mas o conjunto ativo provavelmente tem apenas alguns 100 MB.
  • Da mesma forma, tenho um servidor Apache de especificações semelhantes que atende a um milhão de solicitações por dia e tem uma taxa ociosa média de 95% da CPU. As solicitações são uma mistura de consultas AJAX de dados de mapa muito simples e páginas MediaWiki mais complexas.
  • O benchmarking de seu aplicativo específico é um bom começo para tentar determinar exatamente o que você precisa. Você não quer subestimar, mas a superestimativa pode ser tão ruim devido ao potencial desperdício de dinheiro e esforço.
  • Considere não apenas a taxa média de solicitações, mas a taxa de pico. Você não quer um servidor que mal consegue lidar com a taxa média, já que as taxas de solicitação podem variar significativamente ao longo do dia, da semana e do mês. Por exemplo, eu posso obter 3-4x o tráfego durante o horário de pico nos finais de semana, como faço nas horas mínimas durante a semana. O quanto isso varia dependerá do seu aplicativo e da base de usuários.
  • Você pode armazenar em cache qualquer uma das suas solicitações de banco de dados / HTTP? Isso pode aumentar drasticamente sua taxa de solicitações com hardware mais barato / menos, dependendo de quanto você pode armazenar em cache.
  • Considere suas opções de escalonamento para crescimento futuro agora em vez de mais tarde. Uma boa opção pode ser usar o escalonamento horizontal, que permite que você comece com o mínimo de hardware e cresça facilmente, conforme necessário.
  • O design adequado da sua camada de aplicativo pode ter um efeito enorme em seu desempenho final. Uma consulta SQL incorreta em uma tabela sem índices pode ser de ordens de magnitude mais lenta que a planejada adequadamente. Da mesma forma, servidores Apache / MySQL mal configurados podem ser muitas vezes mais lentos do que quando configurados corretamente.
por 18.12.2010 / 21:46