Como otimizar o banco de dados mysql para servir milhares de pedidos por vez?

2

Como otimizar o banco de dados MySQL para atender milhares de solicitações por vez?

Para um site como: linksnappy.com

É possível configurar para separar servidores MySQL em um servidor de balanceamento de carga? Então, se um deles estiver sobrecarregado, mude para o próximo.

Mesma pergunta para o servidor de tratamento de solicitações http.

Outra questão: Que tipo de servidor preciso para atender milhares de solicitações por vez? (servidor http) Você pode ver que o tipo de site do qual estou falando é um site de download. O servidor simplesmente morre quando temos muitas solicitações de download. Atualmente temos intel quad core XEON 2.4ghz com 4GB de memória RAM.

    
por benRollag 01.09.2010 / 07:16

2 respostas

3

Vamos começar do começo:

we currently have intel xeon quad core 2.4ghz with 4gb of ram.

Isso possivelmente é o culpado aqui. 4gb de RAM é uma piada para um quad core, especialmente se lidar com milhares de pedidos paralelos. 4096mb de RAM em 2000 pedidos (menor definição de milhares) deixa 2mb de RAM por solicitação (ignorando todo o resto).

Você definitivamente não tem um problema no MySQL SOMENTE. O principal problema é que você precisa de uma infra-estrutura completa que permita gerenciar milhares de solicitações de doswload por segundo (ou precisar de alguém esclarecendo seu post), o que significa muita banda de rede, muita largura de banda IO e um servidor com muito mais RAM do que - desculpe - uma estação de trabalho barata e desatualizada (bem assim - minha estação de trabalho de desenvolvedor tinha 4 GB aproximadamente há 3 anos, recentemente passando para 8 GB). Você também precisará de um subsistema IO para lidar com a carga, o que possivelmente significa muitos e muitos discos em um bom controlador RAID de hardware (esqueça o software aqui - você quer algo com mais recursos que o seu software raid).

  • Balanceamento de carga HTTP: facilmente dable, seja em software ou em hardware (a F5 tem algum hardware para isso). Dependendo da sua programação (sessões), você pode precisar de sessões fixas para que o mesmo cliente seja novamente colocado na mesma caixa.

  • O primeiro passo seria separar os arquivos de download do site real (sdomain / subdomain separado) e no próximo processo, convertendo-os em servidores separados. O banco de dados MySQL (bem, o banco de dados - isso não é específico do MySQL) também pode ir para um servidor separado.

  • 2000 solicitações por segundo não são algo que precisa de vários servidores, a menos que as solicitações sejam complexas, o que elas provavelmente não são. A principal limitação desse desempenho é provavelmente o lado da OI. No seu caso eu aposto que você liga a RAM de 4GB com um subsistema de disco de baixo nível. Para dar uma idéia de como um servidor db pode gostar - meus próprios bancos de dados principais (armazenamento de dados financeiros) tem cerca de 10 discos de alta velocidade (Velociraptors, 10k RPM) para garantir que o banco de dados (no meu caso um SQL Server) não transformar-se no gargalo. Eu ainda tenho problemas de desempenho no lado do IO ... então vou mover algumas coisas para o SSD agora. Tecnicamente, a menos que esteja fazendo apenas o rporting na memória (o que é muito improvável com o seu barramento de 4 GB compartilhado para configuração de serviço), o subsistema de E / S é a principal limitação para bancos de dados.

No final, muito depende da sua programação. Você não encontrará uma resposta decente - isso exige muito planejamento, olhando para o seu código.

    
por 01.09.2010 / 09:00
1

Os pedidos por segundo são números mágicos e não fazem sentido. Posso atender a 10.000 solicitações por segundo com o servidor da web executando o hello world e 0.0001 solicitações por segundo com algum bloatware por trás do mesmo servidor da web.

Que tipo de servidor você precisa? Você precisa de uma pessoa que saiba o que está fazendo e não um novo servidor. Mas para responder à sua pergunta "um grande tipo".

    
por 06.07.2011 / 05:12