Query about keepalive

Fasih faskiri.devel at gmail.com
Tue Apr 24 11:52:39 UTC 2012

Hi All,

Few days back I was trying to evaluate the performance of upstream
keepalive feature for a website when I noticed a rather unexpected
behaviour. It would be help me understand what's going on in the test.

Here's what I did:
1. Setup httperf to run a session load. This basically means that a text
file with different urls is supplied to httperf. httperf sends all the
requests in bursts spaced by a sec towards nginx.

2. Tcpdump is run on the machine

3. Before the tests begin, cache is cleared and nginx restarted

4. Test is repeated with httperf "replaying" the requests 1 time first, and
re-run with repeat count 4 to account for setup of connections/cache
priming etc

5. All the steps are repeated once without keepalive and with keepalive 512;

SessionKeep aliveConns upstreamConn TimeUnique upstream hostsReqs upstreamAvg
time to 1st byteMax upstream conn reuseClient conns (1)Client reqs (1)Client
replies (1)Testdur (1)Client connsClient reqsClient repliesTestdurmy-site148

* First row with keepalive, second row without keepalive.
* With keepalive, number of connections upstream (as seen in tcpdump) is
48. Note that my-site has multiple (19 - unique upstream hosts) subdomains,
each of which is individually configured. Without keepalive 192 connections
are made
* Total time spent establishing connections is 8.3 vs 20.7
* Latency is ~0.15secs
All these are as expected, test duration however goes from 78 -> 71 secs.
An *increase* in the time for test to complete.

As the number of unique upstream increases, the time increases further.
This wasnt something that I could explain. Please help me understand, is it
a bug in the system?

nginx version: nginx/1.1.18
built by gcc 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)
TLS SNI support enabled
configure arguments: --without-http_ssi_module --without-http_geo_module
--without-http_uwsgi_module --without-http_scgi_module
--without-http_memcached_module --without-mail_pop3_module
--without-mail_imap_module --without-mail_smtp_module
--with-http_ssl_module --with-debug --without-http_rewrite_module

Cache config:
    proxy_cache_path  /tmp/cache levels=1:2 keys_zone=my-cache:8m
max_size=1000m inactive=600m;

Highly appreciate any help on this.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20120424/8acb5386/attachment-0001.html>

More information about the nginx-devel mailing list