Varnish powered

aprile 15, 2012
By

Più per sfizio che per reale bisogno ho reso il mio blog Varnish powered, passando dalle due richieste al secondo scarse che il server virtuale che ho preso riesce a soddisfare alle 20 e più che sa fornire Varnish sulla stessa macchina

Per tenere le cose un po’ più semplici ho splittato la parte di amministrazione e la parte di frontend di wordpress sfruttando il fatto che ho due ip a disposizione.
Ho messo apache in ascolto sulla :80 dell’ip “secondario” e l’ho lasciato sulla :443 del principale, dove entro tramite ssl in amministrazione
Questo approccio mi ha reso più semplice spostare la configurazione di apache da un ip all’altro per fare i test, minimizzando il downtime.
Come dicono anche mille tutorial in giro per il web per cachare con profitto i contenuti di WordPress con Varnish bisogna eliminare i cookies per tutte le pagine che non ne hanno bisogno.
Per il momento dato che non offro funzionalità che facciano uso dei cookies per altro che l’autenticazione li ho eliminati in modo molto brutale:

if(!(req.url ~ "wp-(login|admin)")){
unset req.http.Cookie;
}

Eventualmente sarebbe possibile prendere uno o più cookies, isolarli e usarli per creare l’hash

Sto provando con vari parametri per ottimizzare Varnish, ma credo che il problema inizi ad essere l’infrastruttura di networking dietro alla quale sta il mio VPS
Per ~60€/anno credo sia difficile pretendere di più 🙂
Prova ne sia che da fuori ho questo risultato

ab -c 30 -n 200 http://www.marcoalbarelli.eu/
This is ApacheBench, Version 2.3
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.marcoalbarelli.eu (be patient)
Completed 100 requests
Completed 200 requests
Finished 200 requests

Server Software: Apache
Server Hostname: www.marcoalbarelli.eu
Server Port: 80

Document Path: /
Document Length: 21873 bytes

Concurrency Level: 30
Time taken for tests: 11.483 seconds
Complete requests: 200
Failed requests: 0
Write errors: 0
Total transferred: 4443088 bytes
HTML transferred: 4382690 bytes
Requests per second: 17.42 [#/sec] (mean)
Time per request: 1722.428 [ms] (mean)
Time per request: 57.414 [ms] (mean, across all concurrent requests)
Transfer rate: 377.86 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 29 373 411.0 254 3330
Processing: 299 1181 794.7 973 5514
Waiting: 65 512 510.1 319 3346
Total: 430 1554 865.0 1363 5568

Percentage of the requests served within a certain time (ms)
50% 1363
66% 1710
75% 1997
80% 2103
90% 2336
95% 2691
98% 5153
99% 5438
100% 5568 (longest request)

Mentre da dentro ho quest’altro:

ab -c 500 -n 4000 http://www.marcoalbarelli.eu/
This is ApacheBench, Version 2.3
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.marcoalbarelli.eu (be patient)
Completed 400 requests
Completed 800 requests
Completed 1200 requests
Completed 1600 requests
Completed 2000 requests
Completed 2400 requests
Completed 2800 requests
Completed 3200 requests
Completed 3600 requests
Completed 4000 requests
Finished 4000 requests

Server Software: Apache
Server Hostname: www.marcoalbarelli.eu
Server Port: 80

Document Path: /
Document Length: 21873 bytes

Concurrency Level: 500
Time taken for tests: 2.731 seconds
Complete requests: 4000
Failed requests: 0
Write errors: 0
Total transferred: 90031467 bytes
HTML transferred: 88812572 bytes
Requests per second: 1464.50 [#/sec] (mean)
Time per request: 341.414 [ms] (mean)
Time per request: 0.683 [ms] (mean, across all concurrent requests)
Transfer rate: 32190.19 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 24 46.5 7 241
Processing: 24 219 354.1 68 1988
Waiting: 3 158 311.8 59 1959
Total: 24 243 362.0 74 2014

Percentage of the requests served within a certain time (ms)
50% 74
66% 125
75% 256
80% 271
90% 763
95% 1027
98% 1691
99% 1695
100% 2014 (longest request)

Passando da -s file a -s malloc la situazione all’interno è ancora migliorata anche se non di molto, arrivando a ~1.6k richieste
È difficile testare il peso della cpu dato che per raggiungere i limiti di varnish devo fare i test sulla stessa macchina, quindi ab occupa tropper risorse e inficia la lettura
Per il momento mi posso accontentare

Tags: , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


*