Como otimizar o verniz sobre o Odoo?

1

Gostaria de otimizar uma instalação do Odoo com o Varnish 4. Odoo usa o Python / Werkzeug para entregar HTML. Odoo 8.0rc1 e Varnish 4.0.1-2 ~ confiáveis no Ubuntu 14.04. Ambos Odoo / Varnish estão instalados no mesmo servidor. Com um teste simples usando ab, obtive 117 solicitações por segundo sem verniz (na porta 8069) e 116 com verniz. No lado do servidor eu tenho o servidor Odoo um pouco mais carregado (10%) não usando verniz.

Alguma idéia?

Isso é diretamente para o Odoo:

aw@lian:~$ ab -n 1000 -c 20 http://myodoo.example.com:8069/web
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking xxx (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        Werkzeug/0.9.4
Server Hostname:        
Server Port:            8069

Document Path:          /web
Document Length:        251 bytes

Concurrency Level:      20
Time taken for tests:   8.516 seconds
Complete requests:      1000
Failed requests:        0
Non-2xx responses:      1000
Total transferred:      476000 bytes
HTML transferred:       251000 bytes
Requests per second:    117.42 [#/sec] (mean)
Time per request:       170.323 [ms] (mean)
Time per request:       8.516 [ms] (mean, across all concurrent requests)
Transfer rate:          54.58 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       29   33   2.5     33      38
Processing:    43  136  28.0    133     226
Waiting:       43  135  28.0    133     225
Total:         73  169  28.3    167     259

Percentage of the requests served within a certain time (ms)
  50%    167
  66%    178
  75%    186
  80%    192
  90%    209
  95%    221
  98%    235
  99%    242
 100%    259 (longest request)

Isso é via verniz:

aw@lian:~$ ab -n 1000 -c 20 http://myodoo.example.com/web
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking xxxx (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        Werkzeug/0.9.4
Server Hostname:        
Server Port:            80

Document Path:          /web
Document Length:        251 bytes

Concurrency Level:      20
Time taken for tests:   8.603 seconds
Complete requests:      1000
Failed requests:        0
Non-2xx responses:      1000
Total transferred:      536197 bytes
HTML transferred:       251000 bytes
Requests per second:    116.23 [#/sec] (mean)
Time per request:       172.067 [ms] (mean)
Time per request:       8.603 [ms] (mean, across all concurrent requests)
Transfer rate:          60.86 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       29   33   2.5     33      38
Processing:    66  138  31.7    132     272
Waiting:       66  137  30.1    132     255
Total:         95  171  32.1    166     305

Percentage of the requests served within a certain time (ms)
  50%    166
  66%    178
  75%    186
  80%    194
  90%    212
  95%    233
  98%    262
  99%    279
 100%    305 (longest request)
aw@lian:~$ 
    
por Anders Wallenquist 01.09.2014 / 08:59

1 resposta

0

O verniz é mais poderoso quando você substitui o padrão 'vcl' por seu próprio. Por padrão, isso é configurado em /etc/varnish/default.vcl (debian).

Você precisará garantir que o script de inicialização faça referência a esse arquivo.

Se você o tiver aberto, poderá ver o código padrão. Basicamente, você precisa "desanimá-lo" no cabeçalho Cookie, enquanto ele passa pelo sistema, para que o verniz possa realmente armazenar o item em cache.

Por padrão, você vai pelo menos querer forçar a mídia estática (imagens, javascript, css) a ser forçada, da seguinte forma:

sub vcl_recv {
    if (req.url ~ "\.(css|js|ico|png|gif|jpg|swf|jpeg|zip)$" ||
            req.url ~ "\.js?ver\=*$" ||
            req.url ~ "\.css?ver\=*$") {
                    unset req.http.cookie; # Cookies not needed here
                    return(lookup);
    }
}

A documentação do verniz é realmente detalhada, e explica como fazer basicamente tudo que você precisa fazer no VCL. Eu recomendaria strongmente passar algumas horas apenas lendo sobre isso:

Documentos para a v3: link v4: link

Especificamente, você provavelmente desejará o "Guia do usuário".

O verniz é incrivelmente poderoso, mas você pega o que você coloca nele!

Boa sorte, se você ficar preso em alguma coisa, não hesite em fazer mais perguntas!

    
por 07.11.2014 / 17:14

Tags