Compressed and uncompressed cached object handling

2009-11-17 Thread Daniel Rodriguez
Hi guys,

I'm having a problem with a varnish implementation that we are testing
to replace an ugly appliance. We were almost ready to place our server
in a more real  environment (some of our production sites), but I
found out that there is something not working properly with the
compression handling in my varnishd (varnish-2.0.5 - Debian)

Varnish its returning the first object cached no matter if i ask for a
clear object (no Accept-encoding specified) or a gzip/deflate object.
If the object cached is a gzip object it will return that no matter if
I later ask for a clear one later.

According to what I have seen in the documentation varnish should keep
both object versions (compressed and no-compressed) in the cache and
deliver the one that its asked by the client.

Step 1

I ask for a non-compressed object (no Accept-encoding specified). This
works great

GET -H TE: -sed http://foo.bar/test/prueba.php;
200 OK
Cache-Control: max-age=20
Connection: close
Date: Mon, 16 Nov 2009 16:56:06 GMT
Via: 1.1 varnish
Age: 0
Server: Apache
Content-Length: 11013
Content-Type: text/html; charset=iso-8859-15
Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
Client-Date: Mon, 16 Nov 2009 16:56:06 GMT
Client-Peer: 10.10.10.10:80
Client-Response-Num: 1
X-Varnish: 1655545411

The request goes like this in the log:

  12 SessionOpen  c 10.20.20.20 57909 :80
    12 ReqStart c 10.20.20.20 57909 1655545411
    12 RxRequest    c GET
    12 RxURL    c /test/prueba.php
    12 RxProtocol   c HTTP/1.1
    12 RxHeader c Connection: TE, close
    12 RxHeader c Host: foo.bar
    12 RxHeader c TE:
    12 RxHeader c User-Agent: lwp-request/5.827 libwww-perl/5.831
    12 VCL_call c recv
    12 VCL_return   c lookup
    12 VCL_call c hash
    12 VCL_return   c hash
    12 VCL_call c miss
    12 VCL_return   c fetch
    14 BackendOpen  b default 10.10.10.10 33484 10.30.30.30 80
    12 Backend  c 14 default default
    14 TxRequest    b GET
    14 TxURL    b /test/prueba.php
    14 TxProtocol   b HTTP/1.1
    14 TxHeader b Host: foo.bar
    14 TxHeader b User-Agent: lwp-request/5.827 libwww-perl/5.831
    14 TxHeader b X-Varnish: 1655545411
    14 TxHeader b X-Forwarded-For: 10.20.20.20
 0 CLI  - Rd ping
 0 CLI  - Wr 0 200 PONG 1258390564 1.0
    14 RxProtocol   b HTTP/1.1
    14 RxStatus b 200
    14 RxResponse   b OK
    14 RxHeader b Date: Mon, 16 Nov 2009 16:56:01 GMT
    14 RxHeader b Server: Apache
    14 RxHeader b Cache-control: max-age=20
    14 RxHeader b Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
    14 RxHeader b Connection: close
    14 RxHeader b Transfer-Encoding: chunked
    14 RxHeader b Content-Type: text/html; charset=iso-8859-15
    12 ObjProtocol  c HTTP/1.1
    12 ObjStatus    c 200
    12 ObjResponse  c OK
    12 ObjHeader    c Date: Mon, 16 Nov 2009 16:56:01 GMT
    12 ObjHeader    c Server: Apache
    12 ObjHeader    c Cache-control: max-age=20
    12 ObjHeader    c Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
    12 ObjHeader    c Content-Type: text/html; charset=iso-8859-15
    14 BackendClose b default
    12 TTL  c 1655545411 RFC 20 1258390566 0 0 20 0
    12 VCL_call c fetch
    12 VCL_return   c deliver
    12 Length   c 11013
    12 VCL_call c deliver
    12 VCL_return   c deliver
    12 TxProtocol   c HTTP/1.1
    12 TxStatus c 200
    12 TxResponse   c OK
    12 TxHeader c Server: Apache
    12 TxHeader c Cache-control: max-age=20
    12 TxHeader c Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
    12 TxHeader c Content-Type: text/html; charset=iso-8859-15
    12 TxHeader c Content-Length: 11013
    12 TxHeader c Date: Mon, 16 Nov 2009 16:56:06 GMT
    12 TxHeader c X-Varnish: 1655545411
    12 TxHeader c Age: 0
    12 TxHeader c Via: 1.1 varnish
    12 TxHeader c Connection: close
    12 ReqEnd   c 1655545411 1258390561.316438675
1258390566.327898026 0.000134945 5.010995150 0.000464201
    12 SessionClose c Connection: close
    12 StatSess c 10.20.20.20 57909 5 1 1 0 0 1 282 11013

Step 2

Then the next request will go with a (Accept-encoding: gzip), and
returns me a clear object :(

GET -H Accept-encoding: gzip -H TE: -sed http://foo.bar/test/prueba.php;
200 OK
Cache-Control: max-age=20
Connection: close
Date: Mon, 16 Nov 2009 16:56:09 GMT
Via: 1.1 varnish
Age: 3
Server: Apache
Content-Length: 11013
Content-Type: text/html; charset=iso-8859-15
Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
Client-Date: Mon, 16 Nov 2009 16:56:08 GMT
Client-Peer: 10.10.10.10:80
Client-Response-Num: 1
X-Varnish: 1655545412 1655545411

12 SessionOpen  c 10.20.20.20 57910 :80
12 ReqStart c 10.20.20.20 57910 1655545412
12 RxRequestc GET
12 RxURLc /test/prueba.php
12 RxProtocol   c HTTP/1.1
12 RxHeader c Connection: TE, close
12 RxHeader c Accept-Encoding: gzip
12 RxHeader c Host: foo.bar
   

Re: Compressed and uncompressed cached object handling

2009-11-17 Thread Michael S. Fischer
Are you returning a Vary: Accept-Encoding in your origin server's  
response headers?

--Michael

On Nov 17, 2009, at 4:01 PM, Daniel Rodriguez wrote:

 Hi guys,

 I'm having a problem with a varnish implementation that we are testing
 to replace an ugly appliance. We were almost ready to place our server
 in a more real  environment (some of our production sites), but I
 found out that there is something not working properly with the
 compression handling in my varnishd (varnish-2.0.5 - Debian)

 Varnish its returning the first object cached no matter if i ask for a
 clear object (no Accept-encoding specified) or a gzip/deflate object.
 If the object cached is a gzip object it will return that no matter if
 I later ask for a clear one later.

 According to what I have seen in the documentation varnish should keep
 both object versions (compressed and no-compressed) in the cache and
 deliver the one that its asked by the client.

 Step 1

 I ask for a non-compressed object (no Accept-encoding specified). This
 works great

 GET -H TE: -sed http://foo.bar/test/prueba.php;
 200 OK
 Cache-Control: max-age=20
 Connection: close
 Date: Mon, 16 Nov 2009 16:56:06 GMT
 Via: 1.1 varnish
 Age: 0
 Server: Apache
 Content-Length: 11013
 Content-Type: text/html; charset=iso-8859-15
 Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
 Client-Date: Mon, 16 Nov 2009 16:56:06 GMT
 Client-Peer: 10.10.10.10:80
 Client-Response-Num: 1
 X-Varnish: 1655545411

 The request goes like this in the log:

   12 SessionOpen  c 10.20.20.20 57909 :80
 12 ReqStart c 10.20.20.20 57909 1655545411
 12 RxRequestc GET
 12 RxURLc /test/prueba.php
 12 RxProtocol   c HTTP/1.1
 12 RxHeader c Connection: TE, close
 12 RxHeader c Host: foo.bar
 12 RxHeader c TE:
 12 RxHeader c User-Agent: lwp-request/5.827 libwww-perl/5.831
 12 VCL_call c recv
 12 VCL_return   c lookup
 12 VCL_call c hash
 12 VCL_return   c hash
 12 VCL_call c miss
 12 VCL_return   c fetch
 14 BackendOpen  b default 10.10.10.10 33484 10.30.30.30 80
 12 Backend  c 14 default default
 14 TxRequestb GET
 14 TxURLb /test/prueba.php
 14 TxProtocol   b HTTP/1.1
 14 TxHeader b Host: foo.bar
 14 TxHeader b User-Agent: lwp-request/5.827 libwww-perl/5.831
 14 TxHeader b X-Varnish: 1655545411
 14 TxHeader b X-Forwarded-For: 10.20.20.20
  0 CLI  - Rd ping
  0 CLI  - Wr 0 200 PONG 1258390564 1.0
 14 RxProtocol   b HTTP/1.1
 14 RxStatus b 200
 14 RxResponse   b OK
 14 RxHeader b Date: Mon, 16 Nov 2009 16:56:01 GMT
 14 RxHeader b Server: Apache
 14 RxHeader b Cache-control: max-age=20
 14 RxHeader b Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
 14 RxHeader b Connection: close
 14 RxHeader b Transfer-Encoding: chunked
 14 RxHeader b Content-Type: text/html; charset=iso-8859-15
 12 ObjProtocol  c HTTP/1.1
 12 ObjStatusc 200
 12 ObjResponse  c OK
 12 ObjHeaderc Date: Mon, 16 Nov 2009 16:56:01 GMT
 12 ObjHeaderc Server: Apache
 12 ObjHeaderc Cache-control: max-age=20
 12 ObjHeaderc Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
 12 ObjHeaderc Content-Type: text/html; charset=iso-8859-15
 14 BackendClose b default
 12 TTL  c 1655545411 RFC 20 1258390566 0 0 20 0
 12 VCL_call c fetch
 12 VCL_return   c deliver
 12 Length   c 11013
 12 VCL_call c deliver
 12 VCL_return   c deliver
 12 TxProtocol   c HTTP/1.1
 12 TxStatus c 200
 12 TxResponse   c OK
 12 TxHeader c Server: Apache
 12 TxHeader c Cache-control: max-age=20
 12 TxHeader c Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
 12 TxHeader c Content-Type: text/html; charset=iso-8859-15
 12 TxHeader c Content-Length: 11013
 12 TxHeader c Date: Mon, 16 Nov 2009 16:56:06 GMT
 12 TxHeader c X-Varnish: 1655545411
 12 TxHeader c Age: 0
 12 TxHeader c Via: 1.1 varnish
 12 TxHeader c Connection: close
 12 ReqEnd   c 1655545411 1258390561.316438675
 1258390566.327898026 0.000134945 5.010995150 0.000464201
 12 SessionClose c Connection: close
 12 StatSess c 10.20.20.20 57909 5 1 1 0 0 1 282 11013

 Step 2

 Then the next request will go with a (Accept-encoding: gzip), and
 returns me a clear object :(

 GET -H Accept-encoding: gzip -H TE: -sed http://foo.bar/test/prueba.php 
 
 200 OK
 Cache-Control: max-age=20
 Connection: close
 Date: Mon, 16 Nov 2009 16:56:09 GMT
 Via: 1.1 varnish
 Age: 3
 Server: Apache
 Content-Length: 11013
 Content-Type: text/html; charset=iso-8859-15
 Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
 Client-Date: Mon, 16 Nov 2009 16:56:08 GMT
 Client-Peer: 10.10.10.10:80
 Client-Response-Num: 1
 X-Varnish: 1655545412 1655545411

12 SessionOpen  c 10.20.20.20 57910 :80
  

Re: Compressed and uncompressed cached object handling

2009-11-17 Thread Daniel Rodriguez
Hi Michael,

That was the problem, the server was not returning the Vary:
Accept-Encoding, I didn't notice that detail in the headers sent by
the server. Its working perfect right now.

Thank you very much.
Regards,

On Tue, Nov 17, 2009 at 11:42 AM, Michael S. Fischer
mich...@dynamine.net wrote:
 Are you returning a Vary: Accept-Encoding in your origin server's response
 headers?

 --Michael

 On Nov 17, 2009, at 4:01 PM, Daniel Rodriguez wrote:

 Hi guys,

 I'm having a problem with a varnish implementation that we are testing
 to replace an ugly appliance. We were almost ready to place our server
 in a more real  environment (some of our production sites), but I
 found out that there is something not working properly with the
 compression handling in my varnishd (varnish-2.0.5 - Debian)

 Varnish its returning the first object cached no matter if i ask for a
 clear object (no Accept-encoding specified) or a gzip/deflate object.
 If the object cached is a gzip object it will return that no matter if
 I later ask for a clear one later.

 According to what I have seen in the documentation varnish should keep
 both object versions (compressed and no-compressed) in the cache and
 deliver the one that its asked by the client.

 Step 1

 I ask for a non-compressed object (no Accept-encoding specified). This
 works great

 GET -H TE: -sed http://foo.bar/test/prueba.php;
 200 OK
 Cache-Control: max-age=20
 Connection: close
 Date: Mon, 16 Nov 2009 16:56:06 GMT
 Via: 1.1 varnish
 Age: 0
 Server: Apache
 Content-Length: 11013
 Content-Type: text/html; charset=iso-8859-15
 Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
 Client-Date: Mon, 16 Nov 2009 16:56:06 GMT
 Client-Peer: 10.10.10.10:80
 Client-Response-Num: 1
 X-Varnish: 1655545411

 The request goes like this in the log:

  12 SessionOpen  c 10.20.20.20 57909 :80
    12 ReqStart     c 10.20.20.20 57909 1655545411
    12 RxRequest    c GET
    12 RxURL        c /test/prueba.php
    12 RxProtocol   c HTTP/1.1
    12 RxHeader     c Connection: TE, close
    12 RxHeader     c Host: foo.bar
    12 RxHeader     c TE:
    12 RxHeader     c User-Agent: lwp-request/5.827 libwww-perl/5.831
    12 VCL_call     c recv
    12 VCL_return   c lookup
    12 VCL_call     c hash
    12 VCL_return   c hash
    12 VCL_call     c miss
    12 VCL_return   c fetch
    14 BackendOpen  b default 10.10.10.10 33484 10.30.30.30 80
    12 Backend      c 14 default default
    14 TxRequest    b GET
    14 TxURL        b /test/prueba.php
    14 TxProtocol   b HTTP/1.1
    14 TxHeader     b Host: foo.bar
    14 TxHeader     b User-Agent: lwp-request/5.827 libwww-perl/5.831
    14 TxHeader     b X-Varnish: 1655545411
    14 TxHeader     b X-Forwarded-For: 10.20.20.20
     0 CLI          - Rd ping
     0 CLI          - Wr 0 200 PONG 1258390564 1.0
    14 RxProtocol   b HTTP/1.1
    14 RxStatus     b 200
    14 RxResponse   b OK
    14 RxHeader     b Date: Mon, 16 Nov 2009 16:56:01 GMT
    14 RxHeader     b Server: Apache
    14 RxHeader     b Cache-control: max-age=20
    14 RxHeader     b Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
    14 RxHeader     b Connection: close
    14 RxHeader     b Transfer-Encoding: chunked
    14 RxHeader     b Content-Type: text/html; charset=iso-8859-15
    12 ObjProtocol  c HTTP/1.1
    12 ObjStatus    c 200
    12 ObjResponse  c OK
    12 ObjHeader    c Date: Mon, 16 Nov 2009 16:56:01 GMT
    12 ObjHeader    c Server: Apache
    12 ObjHeader    c Cache-control: max-age=20
    12 ObjHeader    c Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
    12 ObjHeader    c Content-Type: text/html; charset=iso-8859-15
    14 BackendClose b default
    12 TTL          c 1655545411 RFC 20 1258390566 0 0 20 0
    12 VCL_call     c fetch
    12 VCL_return   c deliver
    12 Length       c 11013
    12 VCL_call     c deliver
    12 VCL_return   c deliver
    12 TxProtocol   c HTTP/1.1
    12 TxStatus     c 200
    12 TxResponse   c OK
    12 TxHeader     c Server: Apache
    12 TxHeader     c Cache-control: max-age=20
    12 TxHeader     c Last-Modified: Mon, 16 Nov 2009 16:56:06 GMT
    12 TxHeader     c Content-Type: text/html; charset=iso-8859-15
    12 TxHeader     c Content-Length: 11013
    12 TxHeader     c Date: Mon, 16 Nov 2009 16:56:06 GMT
    12 TxHeader     c X-Varnish: 1655545411
    12 TxHeader     c Age: 0
    12 TxHeader     c Via: 1.1 varnish
    12 TxHeader     c Connection: close
    12 ReqEnd       c 1655545411 1258390561.316438675
 1258390566.327898026 0.000134945 5.010995150 0.000464201
    12 SessionClose c Connection: close
    12 StatSess     c 10.20.20.20 57909 5 1 1 0 0 1 282 11013

 Step 2

 Then the next request will go with a (Accept-encoding: gzip), and
 returns me a clear object :(

 GET -H Accept-encoding: gzip -H TE: -sed
 http://foo.bar/test/prueba.php;
 200 OK
 Cache-Control: max-age=20
 Connection: close
 Date: Mon, 16 Nov 2009 16:56:09 GMT
 Via: 1.1 varnish
 Age: 3
 Server: Apache
 Content-Length: 11013
 Content-Type: text/html; 

RE: Does vbulletin support varnish?

2009-11-17 Thread Caunter, Stefan
Out of the box vbulletin is php and runs best with fastcgi. You'll get
the most value out of serving images on a separate domain that varnish
answers. The cookies make it difficult.

 

Best running example of a big vbulletin instance is
http://hackint0sh.org/ which is nginx and fastcgi, no apache. 

 

Stefan

 

From: varnish-misc-boun...@projects.linpro.no
[mailto:varnish-misc-boun...@projects.linpro.no] On Behalf Of Debunk it
Sent: November-16-09 8:06 PM
To: varnish-misc@projects.linpro.no
Subject: Does vbulletin support varnish?

 

Hi all,

Can someone confirm whether vbulletin supports varnish out of the box?
Does vbulletin know how to send specific purge requests to varnish on
updates? My concern is mainly about stale cache. I would prefer not to
have to send purge requests manually. Any tips or help is greatly
appreciated.

D

___
varnish-misc mailing list
varnish-misc@projects.linpro.no
http://projects.linpro.no/mailman/listinfo/varnish-misc