Nginx Subdomínio Wordpress Rewrite Rules - APC FPC - Lenta como uma tartaruga. porque?

2

Executando no Ubunty 10.04 Nginx (um dos mais recentes) com o subdomínio do Wordpress multisite usando o plugin.

APC eu tenho versão mais recente mesmo com php, estou executando 4 sites com quase nenhum tráfego (30 acessos por dia em cada) e o servidor de nuvem com rackspace (2gig ram, modelo básico) parece 50% de uso de RAM é normal. Funciona, mas

1) Estou usando o batcache, plugins do APC, mas não tenho certeza de quanta memória para dar a eles, atualmente 128megs. Eu coloquei APC em 128 megas devido a erros no log pedindo mais memória e veja abaixo como fica. link < --- imagem do gráfico de páginas apc.php

2) javascript não sendo compactado pelo gzip.

3) index.php está dentro de cada URL e, se removido, o wordpress gera erros.

Abaixo estão os meus arquivos cfg, Por favor me ajude a ver o que está faltando, eu olhei para 50 páginas nginx para configurações e adaptei este a partir delas desde que nenhuma delas foi exatamente adequada para minha configuração

nginx.cfg

user www-data;
worker_processes 2;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
      use epoll; #v1
     # multi_accept on; #v1
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
      #tcp_nodelay off; #v1
    tcp_nodelay on; #v2
    server_tokens off;

    include mime.types;

    default_type  application/octet-stream;
    index index.php index.htm index.html redirect.php;

    keepalive_timeout 15;
    keepalive_requests 2000;
    types_hash_max_size 2048;

    ##necessary if using a multi-site plugin
    server_name_in_redirect off;
    ##necessary if running Nginx behind a reverse-proxy
    port_in_redirect off;
    server_names_hash_bucket_size 64;

    open_file_cache max=1000 inactive=300s;
    open_file_cache_valid 360s;
    open_file_cache_min_uses 2;
    open_file_cache_errors off;

    client_body_buffer_size 128K;
    client_header_buffer_size 1k;
    client_max_body_size 2m;
    large_client_header_buffers 4 8k;

    client_body_timeout   10m;
    client_header_timeout 10m;
    send_timeout          10m;

    ##
    # Logging Settings
    ##

    error_log /var/log/nginx/error.log;
        access_log off;

    ##
    # Gzip Settings
    ##

    gzip on;

    gzip_vary on;
    gzip_proxied any; #v2
      #gzip_proxied     expired no-cache no-store private auth; #v1
    gzip_comp_level 6;
    gzip_min_length  1000;
    gzip_buffers 32 8k; #v1
   # gzip_buffers 16 8k; #v2
    gzip_http_version 1.1;

    gzip_disable "MSIE [1-6].(?!.*SV1)";
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Fast cgi
    ##

  #  fastcgi_intercept_errors on;
  #  fastcgi_ignore_client_abort on;
  #  fastcgi_buffers 8 16k;
   # fastcgi_buffer_size 32k;
 #   fastcgi_read_timeout 120;
    #fastcgi_index  index.php;
#
  #  limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;


    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

sites disponíveis

map $host $wp_dir_id {
        .my-website-with-id-1-in-wordpress.com      1;
        site2.com      2;
        site3.com      3;
        site4.com      4;
}
server {
        ## Ports
        listen          80;

        ## server name
        # . acts as wildcard

        server_name     .my-website-with-id-1-in-wordpress.com;

        ## root

        root            /var/www/;

        ## global rewrites
        # WordPress Network sites files (map is above)

        if ( $wp_dir_id != 1 )
        {
                rewrite ^/files/(.*)$ /wp-content/blogs.dir/$wp_dir_id/files/$1 last;
        }
        # fallback if site is not mapped
        if ( $wp_dir_id = 1 )
        {
                rewrite ^(.*)/files/(.*)$ /wp-includes/ms-files.php?file=$2 last;
        }
        ## locations

        location / {
                # enable browser cache for images
                # not location, because this applies for PHP served images as well in WP Network
                if ( $uri ~ \.(ico|gif|jpg|jpeg|png)$  ) {
                        expires 31d;
                        add_header Pragma public;
                        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
                }

                # enable browser cache for css / js
                # not location, because this applies for PHP served files as well in WP Network
                if ( $uri ~ \.(css|js)$  ) {
                        expires 7d;
                        add_header Pragma public;
                        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
                }
                # default uri
                try_files $uri $uri/ @rewrites;
        }
        # rewrite rules
        location @rewrites {
                rewrite ^(.*)$ /index.php?q=$1 last;
        }
        ## hide files starting with .
        location ~ /\. {
                deny all;
                log_not_found off;
        }
        ## enable nginx status screen, optional
        location /nginx_status {
                stub_status on;
        }
        ## pass to PHP5-FPM server in the background
        location ~ .php {
                fastcgi_param   QUERY_STRING            $query_string;
                fastcgi_param   REQUEST_METHOD          $request_method;
                fastcgi_param   CONTENT_TYPE            $content_type;
                fastcgi_param   CONTENT_LENGTH          $content_length;
                fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;
                fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
                fastcgi_param   REQUEST_URI             $request_uri;
                fastcgi_param   DOCUMENT_URI            $document_uri;
                fastcgi_param   DOCUMENT_ROOT           $document_root;
                fastcgi_param   SERVER_PROTOCOL         $server_protocol;
                fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
                fastcgi_param   SERVER_SOFTWARE         nginx;
                fastcgi_param   REMOTE_ADDR             $remote_addr;
                fastcgi_param   REMOTE_PORT             $remote_port;
                fastcgi_param   SERVER_ADDR             $server_addr;
                fastcgi_param   SERVER_PORT             $server_port;
                fastcgi_param   SERVER_NAME             $server_name;
                # PHP only, required if PHP was built with --enable-force-cgi-redirect
                fastcgi_param   REDIRECT_STATUS         200;
                fastcgi_index                           index.php;
                fastcgi_connect_timeout                 60;
                fastcgi_send_timeout                    180;
                fastcgi_read_timeout                    180;
                fastcgi_buffer_size                     128k;
                fastcgi_buffers                         4       256k;
                fastcgi_busy_buffers_size               256k;
                fastcgi_temp_file_write_size            256k;
                fastcgi_intercept_errors                on;
                fastcgi_ignore_client_abort             on;
                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                   #fastcgi_pass    127.0.0.1:9000;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
        }
}
    
por NickNo 15.09.2012 / 22:40

1 resposta

0

Eu parcialmente posso responder depois de um ou dois dias de leitura

1) A APC ainda está tão fragmentada quanto o link para a imagem acima. Vou tentar chegar a ele e se eu descobrir o que está causando a fragmentação, mas os maiores arquivos fragmentados são os plugins batcache e apc wordpress.

2) javascript não estava recebendo gzipped porque foi enviado como application / javascript e vi que eu tinha dois javascripts no meu cfre alreeady incluindo text / javascript (que eu sempre pensei que era javascript por padrão.

Então, agora tudo que sai do servidor está ficando gzimed. Então, depois de adicionar o aplicativo / javascript à linha que começa com 'gzip_types' no primeiro bloco de código da minha pergunta, o javascript começou a funcionar.

3) O index.php não estava sendo reescrito já que eu não tinha todas as regras de reescrita do nginx para o subdomínio multisite (existem 3 principais para obter links perma). No entanto, isso causou um problema adicional para a superfície para o qual vou abrir uma nova questão.

Estas são as três linhas de reescrita, e eu só tive a última

rewrite ^(/[^/]+)?(/wp-.*) $2 last;
rewrite ^(/[^/]+)?(/.*\.php) $2 last;
rewrite ^/(.*)$ /index.php?q=$1 last;
    
por 16.09.2012 / 23:45