Gargalos sistêmicos
O curso trata de problemas de desempenho que nascem de recursos finitos e compartilhados numa aplicação Rails. Ele separa um caminho lento, que é lento com qualquer carga, de um platô, que aparece quando a concorrência chega a um limite. As aulas passam por workers e threads do Puma, quatro bancos lógicos num só servidor Postgres, a conta do pool de conexões e o Solid Queue rodando dentro do Puma. Também mostram como pular trabalho desnecessário, medir com execuções aquecidas e mediana, e saber a hora de parar.
O que você vai aprender
- ✓Como diferenciar um caminho lento de um platô, e por que a vazão é a concorrência dividida pela latência
- ✓Por que quatro bancos lógicos num só servidor Postgres dividem todos os tetos e um piso de polling
- ✓Como o pool de conexões se multiplica por processo e por banco, e o que o ConnectionTimeoutError indica
- ✓O que custa rodar o Solid Queue dentro do Puma, e como filas nomeadas separam jobs lentos
- ✓Como pular trabalho desnecessário, medir com execuções aquecidas e mediana, e reconhecer a hora de parar
Um platô não é uma query lenta
Existem dois problemas de desempenho bem diferentes. De fora, eles parecem iguais, e a maior parte da otimização desperdiçada vem de tratar um como se fosse o outro.
Ler a aula completa grátis →Currículo
7 aulasUm platô não é uma query lenta
Diferencia um caminho lento de um platô e mostra que a vazão é a concorrência dividida pela latência.
Tudo é um banco só
Mostra que primary, cache, queue e cable ficam num só servidor Postgres, dividindo tetos e um piso de polling.
O pool de conexões
Explica por que o pool vale por processo e por banco, e o que o ConnectionTimeoutError costuma indicar.
Quando jobs e requisições dividem a máquina
Trata do Solid Queue dentro do Puma, da CPU e memória compartilhadas, de filas nomeadas e do intervalo de polling.
O trabalho mais barato é o não feito
Percorre a página de roadmap, onde o cache de coleção e um único select reduziram o tempo e as queries.
Medir sem se enganar
Trata de aquecer e usar a mediana, separar tempo de banco, view e framework, e saber quando parar.
Juntando tudo
Revisa o curso e propõe um desafio: calcular a vazão, o gargalo e a utilização por estágio de um pipeline.