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.

Engarrafamento na baia de São Francisco

(A imagem é tomada de izahorsky flickr )

Há também uma dependência bem conhecido da teoria de filas, que mostra a mesma coisa:

Teoria das filas

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.

 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:

ramp-metering.png

 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:

throughput-esperado.png

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.10Percona-alfa Server e há alguns relatos de usuários com melhorias visíveis, ou seja:

“Pool de thread do Percona no mundo real, tremendamente melhora problemas de bloqueio do comboio: http://buff.ly/12FUiYf, ativado na sétima volta do meio dia”

mysql-percona-thread-pool.png

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”

  1. flavio on July 9th, 2017 9:25 am

    muito bom esse artigo, gostei do conteudo passado aqui, esta de parabens

Leave a Reply






Últimos posts