gzip - unexplained side effects

Igor Sysoev igor at sysoev.ru
Wed Nov 9 12:41:33 UTC 2011

On Tue, Nov 08, 2011 at 09:14:04PM -0500, dbanks wrote:
> Hi,
> I'm running nginx 1.0.0 in front of a FCGI backend.  We've been running
> in production for about 4 months, and have really been impressed with
> the performance and stability of nginx.
> We run a medium-volume appliction: 1000 to 4000 requests/sec spread over
> 2 instances by an upstream round robin load balancer.  We use
> keepalives, but keep them rather short given the request volume to keep
> the number of open connections manageable.  
> Recently, I was working to improve our gzip settings.  The largest
> change was that I added an explicit gzip buffer line (find my config
> below - the three lines that are commented out seem to be correlated
> with this issue)
> After the change, the volume of outbound traffic decreased measurably,
> as if gzip was not originally doing much due to inadequate buffer space.
>  Great news!, or so I thought.  What also changed was that the number of
> active connections fell by about 75% - the gzip change was somehow
> causing keepalives to be closed prematurely.  Also, our volume of
> incoming requests decreased a bit: as if some requests were being
> aborted (though accepts == handled).   The request volume makes
> debugging this particular issue somewhat troublesome, since I have yet
> to replicate it in a quiet instance.
> The guts of my configuration appear below.  This is such an unexpected
> issue that I'm not doing a great job of setting up my question well. 
> What I think I'd like to know is how could a change to the gzip buffers
> (or the other two commented changes) impact keepalives or overall
> connection negotiation?  Also, any suggestions as to how to go about
> debugging it?
>     sendfile        off;  
>     tcp_nodelay on;  
>     ignore_invalid_headers  on;  
>     if_modified_since off;
>     gzip on;
>     gzip_comp_level 9;
>     gzip_types text/javascript text/plain application/x-javascript;
>     gzip_disable "MSIE [1-6]\.(?!.*SV1)"  
>     #gzip_buffers 512 4k;
>     #gzip_min_length  1100;  #if it fits in one packet, no worries
>     #gzip_http_version 1.1;
>     keepalive_timeout  6;  
>     keepalive_requests 4;  

If you comment gzip_buffers, you see the previous site state ?
What is typical uncompressed and compressed response size ?
The default gzip_buffers are "32 4k", so they can keep up to 128K.

And as it was already suggested it's better to use default
gzip_comp_level 1.

Igor Sysoev

More information about the nginx mailing list