11. Aí sim!!!
> ab -n 3 -c 1 http://localhost/pessoa/1
> tail -f /var/log/nginx/proxy.log
[26/Apr/2012:23:09:04 -0300] /pessoas/1 200 MISS 200
[26/Apr/2012:23:09:04 -0300] /pessoas/1 200 HIT -
[26/Apr/2012:23:09:04 -0300] /pessoas/1 200 HIT -
12. Acessos Simultâneos
1. 100 requisições simultâneas na url X
2. Nginx verifica 100 vezes que url X não está no cache
3. Nginx envia 100 vezes requisição da url X para server dinâmico
4. Nginx cacheia 100 vezes url X
20. Flood de timeouts
→ Server dinâmico demorando pra responder
→ Nginx não atualiza cache
→ Efeito cumulativo
21. Flood de timeout na prática
def show
sleep 10
end
> ab -n 3 -c 1 http://localhost/pessoa/4
> tail -f /var/log/nginx/proxy.log
[26/Apr/2012:23:29:02 -0300] /pessoas/4 200 STALE 200
[26/Apr/2012:23:29:07 -0300] /pessoas/4 200 STALE 200
[26/Apr/2012:23:29:12 -0300] /pessoas/4 200 STALE 200
tail -f log/development.log | grep "pessoas/4"
Started GET "/pessoas/4" for 127.0.0.1 at 2012-04-26 23:28:57 -0300
Started GET "/pessoas/4" for 127.0.0.1 at 2012-04-26 23:29:07 -0300
Started GET "/pessoas/4" for 127.0.0.1 at 2012-04-26 23:29:17 -0300
22. Solução do Colin Saliceti
Nginx 1 Nginx 2 Server
stale Timeout Stale Timeout dinâmico
Baixo Alto
Cache Cache
24. Flood resolvido
> ab -n 3 -c 1 http://localhost/pessoa/8
> tail -f /var/log/nginx/proxy.log
[27/Apr/2012:01:27:17 -0300] /pessoas/8 200 STALE 200 5.001
[27/Apr/2012:01:27:17 -0300] /pessoas/8 200 UPDATING - -
[27/Apr/2012:01:27:17 -0300] /pessoas/8 200 EXPIRED 200 0.001
[27/Apr/2012:01:27:17 -0300] /pessoas/8 200 HIT - -
[27/Apr/2012:01:27:22 -0300] /pessoas/8 200 EXPIRED 200 10.010
tail -f log/development.log | grep "pessoas/8"
Started GET "/pessoas/8" for 127.0.0.1 at 2012-04-27 01:27:12 -0300
25. Escalando
Nginx 1 Nginx 2 Server
stale Stale dinâmico
Nginx 1 Nginx 2 Server
Balanceador stale Stale dinâmico
Nginx 1 Nginx 2 Server
stale Stale dinâmico