PHP para aplicações de alta performance
um breve resumo sobre o universo da performance

/me
William Correa
@wilcorrea



- contextualização
- breve história do PHP
- escalonamento horizontal e vertical
- ajustes finos
- balanceamento de carga
- mensageria
- o pulo do gato
Principais Tópicos
PHP escala?

1
PHP nasce como uma linguagem de template
3
extensão para o apache
5
extensões como swoole
2
sintaxe parecida com linguagens como Shell e C
4
php-fpm


Vai ser só sucesso


Só que não
Quem escala é a aplicação e não a linguagem
– MESMO, Eu
Quanto mais algo faz por você
menos você pode fazer
- Armazenamento externo
- Instâncias descartáveis
- Centralizar autorizações
Fazer
Evitar
- Usar o I/O da instância
- Acessar arquivos
- Pensar localmente

Há tantas soluções quanto para cada solução há tantos problemas
Para cada problema

E agora?
A aplicação tá morrendo!
Todo novo componente deve ser minuciosamente pensado para não ser um detrator
Monitorar performance

Escalonamento
Vertical
Aumentar a quantidade de recursos da(s) máquina(s) da aplicação
Comprar mais recursos

Diretivas do PHP-FPM
Diretiva | Possíveis Valores |
---|---|
pm | dynamic |
pm.max_children | int |
pm.start_servers | int |
pm.min_spare_servers | int |
pm.max_spare_servers | int |

Ajustes finos no nginx
- ajustar o tamanho do buffer
- fazer cache do que for estático
- comprimir conteúdo
- quantidade de workers

Preparo para a guerra
- limite de memória proporcional
- cadin de swap não faz mal a ninguém
- proteger-se de DDoS
- APM, logs e error tracker

Era só isso...
mas é um pouco mais
a culpa é minha

então eu coloco em quem eu quiser

Escalonamento
Horizontal
Distribuir a aplicação em múltiplas instâncias que operam juntas
Balanceamento de carga
Ferramentas que ficam na borda de uma estrutura e distribuem
os pedidos entre os
recursos disponíveis

Comprar mais instâncias

cloud arretado

Escalonamento automático
Ferramentas capazes de iniciar novas instâncias quando uma métrica é atingida
infra rocheda

Estrutura Distribuída
Distribuir a aplicação em múltiplas instâncias que operam juntas
a aplicação está na nuvem
que nuvem??

uma filazinha
não faz mal a ninguém

Ferramentas





vamos de ChatGPT


o que tá ruim
pode sempre piorar

pode melhorar
mas não é sobre código

orquestração: saga pattern

Mudança de Hábito
Performance é mais do que apenas um aparato técnico


Pensamento linear
Nossa primeiro impulso é sempre
tentar fazer uma linha reta para chegar
ao destino
pensar de forma assincrona


Dividir para conquistar
E o tal do swoole?

E o tal do swoole?

Qualquer tecnologia suficientemente avançada é indistinguível da magia.
– Terceira lei de Clarke


Micro frameworks

Construa seu conhecimento com senso crítico
Não tome o que influenciadores e pessoas conversadas digam sem ir lá e estudar sobre o assunto para formar o seu conhecimento
hora das palmas
perguntas?
PHP para aplicações de alta performance
By William Correa
PHP para aplicações de alta performance
Há uma lenda sobre PHP ter dificuldade para lidar com uma escala maior de processamento. Esta palestra é sobre a jornada de uma aplicação escrita em PHP para escalar de uma pequena aplicação que atende a pouquíssimas requisições simultâneas a uma que lida com centenas de milhares de solicitações por segundo
- 509