Website sem tráfego leva 10 segundos para carregar com Nginx + FastCGI

1

Ontem eu tive uma instalação otimizada do Nginx funcionando em um site e foi muito rápido. Hoje eu fiz alguns testes com algumas mudanças extras na configuração (apenas adicionando um redirecionamento) e de repente agora o servidor leva 7 ou 10 segundos para servir a página. Uma vez que o pedido é recebido, as páginas carregam muito rápido, mas há um atraso de 10 segundos ao entrar no site e ao navegar também. É minha primeira configuração nginx com fastcgi e eu realmente não sei o que está acontecendo, já que estou no modo de depuração e a única coisa que vejo são as mensagens de informação no log de erros, sem erros ou alertas. Todas as reescritas que você pode ver no código estavam lá ontem, então eu acho que esse não é o problema. Você acha que meu código está formatado incorretamente?

Vou postar aqui a configuração e espero que alguém possa me dar uma dica sobre isso ... obrigada.

user  www-data;
worker_processes  2;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;
worker_rlimit_nofile 30000;
events {
    worker_connections  4096;
}


http {
    perl_modules perl;
      perl_require JavaScript/Minifier.pm;   
      perl_require CSS/Minifier.pm;
      perl_require JSMinify.pm;
      perl_require CSSMinify.pm;

    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;
    gzip_static on;
    gzip_http_version   1.1;
    gzip_proxied        expired no-cache no-store private auth;
    gzip_disable        "MSIE [1-6]\.";
    gzip_vary           on;

    sendfile        on;
    tcp_nopush     off;
    tcp_nodelay     on;

    #keepalive_timeout  0;
    keepalive_timeout  10;

    gzip  on;
    log_request_speed_filter on;
    log_request_speed_filter_timeout 3;

    server {
        listen       80;
        server_name  mysite.com;

        #charset koi8-r;

        access_log  logs/mysite.access.log;
    error_log   logs/mysite.error.log debug;






    location /nginx_status {
        stub_status on;
        access_log   off;
    }
    location ~ \.js$  {
            perl JSMinify::handler;
        }
    location ~ \.css$ { 
            perl CSSMinify::handler;
    }    

    location / {
                root  /usr/local/nginx/html;
        index index.php;
            rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
            rewrite ^/([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$1$2$3.jpg last;
            rewrite ^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3$4.jpg last;
            rewrite ^/([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$1$2$3$4$5.jpg last;
            rewrite ^/([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg last;
            rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg last;
            rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg last;
            rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg last;
            rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg last;
            rewrite ^/c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2$3.jpg last;
            rewrite ^/c/([a-zA-Z-]+)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;
            try_files $uri $uri/ /index.php?$args;
        index  index.html index.htm index.php;
                strip on;
    }
    if ($http_user_agent ~* aesop_com_spiderman|alexibot|backweb|bandit|batchftp|bigfoot|black.hole|blackwidow|blowfish|botalot|buddy|builtbottough|bullseye|cheesebot|cherryicker|chinaclaw|collector|                    copier|copyrightcheck|cosmos|crescent|curl|custo|da|diibot|disco|dittospyder|dragonfly|drip|easydl|ebingbong|ecatch|eirgrabber) {
        rewrite ^/ http://mysite.com/robots.txt;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        fastcgi_read_timeout 10;
        fastcgi_send_timeout 10;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

#    server {
#        listen 80;
#        server_name www.mysite.com;
#        rewrite ^ http://www.mysite.com$uri permanent;
#    }
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}
    
por Chroma Funk 14.05.2013 / 15:19

1 resposta

0

Você não deve fazer nenhum tipo de teste de desempenho em microinstâncias, a menos que você esteja planejando executar micro's em produção (o que eu não recomendo).

As microinstâncias têm CPU otimizada e baixo desempenho de E / S. Ambos são suficientes para evitar usá-los na produção ou se preocupar com a solução de problemas de desempenho.

Minha sugestão é executar alguns testes de desempenho em um tipo de instância de nível de produção (pequeno é um bom começo para pouco tráfego). Essa seria a maneira mais rápida e mais sensata de descartar a micro instância como a causa raiz de seus problemas de desempenho intermitentes.

link

Micro instances (t1.micro) provide a small amount of consistent CPU resources and allow you to increase CPU capacity in short bursts when additional cycles are available. They are well suited for lower throughput applications and web sites that require additional compute cycles periodically

Micro Instância

  • 613 de memória MiB
  • Até 2 Unidades computacionais EC2 (para rajadas periódicas curtas)
  • Somente armazenamento EBS
  • plataforma de 32 ou 64 bits
  • Desempenho de E / S: baixo
  • Otimizado para EBS: Não
  • nome da API: t1.micro
por 14.05.2013 / 15:53

Tags