Estou executando um aplicativo do Django, usando o uWsgi por trás do Nginx. Eu tenho feito algum ajuste de desempenho e teste de carga usando o ApacheBench e descobri algo inesperado que eu me pergunto se alguém poderia explicar para mim. Na minha configuração do Nginx eu tenho uma diretiva de reescrita que pega muitas permutações de URL diferentes e então as encaminha para o URL canônico que eu quero usar, por exemplo, ele captura www.mysite.com/whatever, www.mysite.co.uk/whatever e encaminha todos eles para o link .
Se eu carregar o teste em qualquer um dos URLs listados com um redirecionamento (ou seja, NÃO o URL canônico para o qual ele será encaminhado), ele poderá atender 15000 conexões simultâneas sem suar a camisa.
Se eu carregar o teste contra a URL canônica, para a qual o teste acima eu esperava ser encaminhado de qualquer maneira, ele não aguenta tanto. Ele derrubará cerca de 4.000 das 15.000 solicitações e poderá manipular apenas cerca de 9000 de maneira confiável.
Esta é a linha de comando que estou usando para testar:
ab -c15000 -n15000 http://www.mysite.com/somepath/
e
ab -c15000 -n15000 http://mysite.com/somepath/
Eu tentei vários tipos diferentes - não faz diferença em qual ordem eu os incluo.
Isso não faz sentido para mim - eu posso entender por que as solicitações envolvendo um redirecionamento podem não lidar com tantas conexões simultâneas, mas está acontecendo ao contrário. Alguém pode explicar? Eu realmente preferiria se a URL canônica fosse a que pudesse lidar com mais tráfego.
Vou postar minha configuração do Nginx abaixo.
Obrigado por qualquer ajuda!
server {
server_name www.somesite.com somesite.net www.somesite.net somesite.co.uk www.somesite.co.uk;
rewrite ^(.*) http://somesite.com$1 permanent;
}
server {
root /home/django/domains/somesite.com/live/somesite/;
server_name somesite.com somesite-live.myserver.somesite.com;
access_log /home/django/domains/somesite.com/live/log/nginx.log;
location / {
uwsgi_pass unix:////tmp/somesite-live.sock;
include uwsgi_params;
}
location /media {
try_files $uri $uri/ /index.html;
}
location /site_media {
try_files $uri $uri/ /index.html;
}
location = /favicon.ico {
empty_gif;
}
}