Interrupções no SimCity, controle de tráfego e Thread Pool do MySQL
Author: Ricardo Soares - Postado em: 25/03/2013
Relacionado as categorias: Diversos, Tecnologia | 1 Comment
Para este post eu vou explorar desavergonhadamente a ladainha de problemas técnicos que os jogadores do SimCity encontraram no início deste mês e alguns exemplos de como o Thread Pool do MySQL e do Percona Server para MySQL pode ajudar a evitar tais incidentes.
Usuários de SimCity, um vídeo game de simulação de construção e planejamento urbano, encontrou falhas na rede, problemas como salvar progresso do jogo e problemas de conexão aos servidores do jogo depois de uma nova versão a duas semanas atrás com um novo motor permitindo mais uma simulação detalhada do que a anterior. Durante este mesmo tempo aconteceu que estávamos testando o recurso de Thread Pool no Percona Server para MySQL, e eu vi uma conexão de como o Thread Pool pode ajudar em tais casos.
Basicamente usuários SimCity enfrentaram a mesma situação da Area passageiros em San Francisco Bay enfrentam todos os dias – engarrafamentos de trânsito, o pior, provavelmente dos Estados Unidos.
(A imagem é tomada de izahorsky flickr )
Há também uma dependência bem conhecido da teoria de filas, que mostra a mesma coisa:
Quanto mais usuários que estão tentando acessar um recurso compartilhado, pior é tempo de resposta, crescendo exponencialmente.
Para tornar as coisas ainda pior, muitas vezes vemos o seguinte padrão de throughput.
Basicamente, quanto mais usuários chegando, menos requisições por segundo o sistema é capaz de lidar. A razão é que os processos de trabalho requerem comunicação interna e sincronização. Em algum momento, o sistema se torna instável e praticamente preso. Ataques conhecidos de DDoS são baseadas neste comportamento – para carregar um sistema com tantas requisições que não é capaz de prosseguir.
Qual é a solução aqui? Se você novamente me permitir uma analogia com tráfego: você provavelmente em algum momento encontrou uma solução do tipo “on-ramp metering“, semáforos que controlam quantos veículos podem entrar numa estrada a partir de uma rampa nos momentos de pico de tráfego:
A intenção desta solução é fornecer rendimento bom quando você já está na estrada.
A ideia semelhante está por trás de pool de threads para MySQL. Queremos proporcionar este tipo de throughput:
Isto é conseguido através da limitação da quantidade de threads de trabalho dentro MySQL. Então Thread Pool para o MySQL não melhora o desempenho magicamente por si só, é sim uma proteção para casos em que o MySQL pode tornar-se de repente sobrecarregado.
O recurso pool de segmentos está disponível no Percona Server 5.5.30 e 5.6.10, Percona-alfa Server e há alguns relatos de usuários com melhorias visíveis, ou seja:
Enquanto um plugin similar está disponível a partir do Oracle pelo MySQL Enterprise Subscription, você pode obtê-lo e experimentá-lo com Percona Server para MySQL livre agora mesmo.
ATUALIZAÇÃO de 2013/03/21 sobre Créditos: A implementação atual do pool de segmentos em Percona Server é retirado MariaDB e foi desenvolvido por Vladislav Vaintroub. A implementação comercial é desenvolvido em Oracle / MySQL e eu não sei quem é autor original.
Este é uma tradução direta do post SimCity outages, traffic control and Thread Pool for MySQL
Comments
One Response to “Interrupções no SimCity, controle de tráfego e Thread Pool do MySQL”
Leave a Reply
muito bom esse artigo, gostei do conteudo passado aqui, esta de parabens