Overflowed work requests

Michael postmaster at softsearch.ru
Thu Nov 20 21:06:46 CET 2008


Hi,

PF> What does "overflowed work requests" in varnishstat signify ? If this
PF> number is large is it a bad sign ?

I have similar problem. "overflowed work requests" and "dropped work
requests" is too large.

FreeBSD 7.1-PRERELEASE
varnish-2.0.2 from ports

> varnishstat -1
uptime                    385          .   Child uptime
client_conn            115120       299.01 Client connections accepted
client_req             113731       295.41 Client requests received
cache_hit               39565       102.77 Cache hits
cache_hitpass            8338        21.66 Cache hits for pass
cache_miss              65744       170.76 Cache misses
backend_conn            74104       192.48 Backend connections success
backend_unhealthy            0         0.00 Backend connections not attempted
backend_busy                0         0.00 Backend connections too many
backend_fail                0         0.00 Backend connections failures
backend_reuse           73414       190.69 Backend connections reuses
backend_recycle         73469       190.83 Backend connections recycles
backend_unused              0         0.00 Backend connections unused
n_srcaddr                3207          .   N struct srcaddr
n_srcaddr_act             456          .   N active struct srcaddr
n_sess_mem               1910          .   N struct sess_mem
n_sess                   1780          .   N struct sess
n_object                63603          .   N struct object
n_objecthead            63603          .   N struct objecthead
n_smf                  126931          .   N struct smf
n_smf_frag                  1          .   N small free smf
n_smf_large      18446744073709551614          .   N large free smf
n_vbe_conn                239          .   N struct vbe_conn
n_bereq                   391          .   N struct bereq
n_wrk                     496          .   N worker threads
n_wrk_create              496         1.29 N worker threads created
n_wrk_failed                0         0.00 N worker threads not created
n_wrk_max               47907       124.43 N worker threads limited
n_wrk_queue               455         1.18 N queued work requests
n_wrk_overflow         111098       288.57 N overflowed work requests
n_wrk_drop              47232       122.68 N dropped work requests
n_backend                   1          .   N backends
n_expired                1960          .   N expired objects
n_lru_nuked                 0          .   N LRU nuked objects
n_lru_saved                 0          .   N LRU saved objects
n_lru_moved             32435          .   N LRU moved objects
n_deathrow                  0          .   N objects on deathrow
losthdr                    22         0.06 HTTP header overflows
n_objsendfile               0         0.00 Objects sent with sendfile
n_objwrite              85336       221.65 Objects sent with write
n_objoverflow               0         0.00 Objects overflowing workspace
s_sess                  77004       200.01 Total Sessions
s_req                  113233       294.11 Total Requests
s_pipe                      0         0.00 Total pipe
s_pass                   8638        22.44 Total pass
s_fetch                 73696       191.42 Total fetch
s_hdrbytes           33793720     87775.90 Total header bytes
s_bodybytes        3821523829   9926035.92 Total body bytes
sess_closed              6915        17.96 Session Closed
sess_pipeline            3056         7.94 Session Pipeline
sess_readahead            330         0.86 Session Read Ahead
sess_linger                 0         0.00 Session Linger
sess_herd              104807       272.23 Session herd
shm_records           7238597     18801.55 SHM records
shm_writes             606387      1575.03 SHM writes
shm_flushes                44         0.11 SHM flushes due to overflow
shm_cont                 2188         5.68 SHM MTX contention
shm_cycles                  3         0.01 SHM cycles through buffer
sm_nreq                148189       384.91 allocator requests
sm_nobj                126908          .   outstanding allocations
sm_balloc          4091076608          .   bytes allocated
sm_bfree           5572595712          .   bytes free
sma_nreq                    0         0.00 SMA allocator requests
sma_nobj                    0          .   SMA outstanding allocations
sma_nbytes                  0          .   SMA outstanding bytes
sma_balloc                  0          .   SMA bytes allocated
sma_bfree                   0          .   SMA bytes free
sms_nreq                    1         0.00 SMS allocator requests
sms_nobj                    0          .   SMS outstanding allocations
sms_nbytes                  0          .   SMS outstanding bytes
sms_balloc                453          .   SMS bytes allocated
sms_bfree                 453          .   SMS bytes freed
backend_req             74104       192.48 Backend requests made
n_vcl                       1         0.00 N vcl total
n_vcl_avail                 1         0.00 N vcl available
n_vcl_discard               0         0.00 N vcl discarded
n_purge                     1          .   N total active purges
n_purge_add                 1         0.00 N new purges added
n_purge_retire              0         0.00 N old purges deleted
n_purge_obj_test            0         0.00 N objects tested
n_purge_re_test             0         0.00 N regexps tested against
n_purge_dups                0         0.00 N duplicate purges removed


backend default {
.host = "xx.xx.xx.xx";
.port = "80";
}


acl ournet {
    "xx.xx.xx.xx";
}

#Below is a commented-out copy of the default VCL logic.  If you
#redefine any of these subroutines, the built-in logic will be
#appended to your code.

sub vcl_recv {
    if (req.request != "GET" &&
      req.request != "HEAD" &&
      req.request != "PUT" &&
      req.request != "POST" &&
#      req.request != "TRACE" &&
#      req.request != "OPTIONS" &&
      req.request != "DELETE") {
        /* Non-RFC2616 or CONNECT which is weird. */
        pipe;
#       error 405 "Not allowed";
    }

    # remove usless headers
    unset req.http.Cookie;
    unset req.http.Authenticate;
    unset req.http.Accept;
    unset req.http.Accept-Language;
    unset req.http.Accept-Encoding;
    unset req.http.Accept-Charset;
    unset req.http.Referer;

    # remove args from url
    set req.url = regsub(req.url, "\?.*", "");

    # if content changing
    if (req.request == "DELETE" || req.request == "PUT") {
        if (client.ip ~ ournet) {
            lookup;
        } else {
            error 405 "Not allowed";
        }
    }

    if (req.request != "GET" && req.request != "HEAD") {
        /* We only deal with GET and HEAD by default */
        pass;
    }
    if (req.http.Authorization || req.http.Cookie) {
        /* Not cacheable by default */
        pass;
    }
    lookup;
}

sub vcl_pipe {
    pipe;
}

sub vcl_pass {
    pass;
}

sub vcl_hash {
    set req.hash += req.url;
    if (req.http.host) {
        set req.hash += req.http.host;
    } else {
        set req.hash += server.ip;
    }
    hash;
}

sub vcl_hit {

    # if content changing, remove it from cache
    if (req.request == "DELETE" || req.request == "PUT") {
        set obj.ttl = 0s;
        pass;
    }

    if (!obj.cacheable) {
        pass;
    }

    deliver;
}

sub vcl_miss {
    # if content changing, remove it from cache
    if (req.request == "DELETE" || req.request == "PUT") {
        pass;
    }

    fetch;
}

sub vcl_fetch {
    if (!obj.cacheable) {
        pass;
    }

    # don't cache redirects
    if (obj.status == 302) {
        pass;
    }

    if (obj.http.Set-Cookie) {
        pass;
    }
    set obj.prefetch =  -30s;
    deliver;
}

sub vcl_deliver {
    deliver;
}

#sub vcl_discard {
#    /* XXX: Do not redefine vcl_discard{}, it is not yet supported */
#    discard;
#}
#
#sub vcl_prefetch {
#    /* XXX: Do not redefine vcl_prefetch{}, it is not yet supported */
#    fetch;
#}
#
#sub vcl_timeout {
#    /* XXX: Do not redefine vcl_timeout{}, it is not yet supported */
#    discard;
#}
#
sub vcl_error {
    set obj.http.Content-Type = "text/html; charset=utf-8";
    synthetic {"
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>"} obj.status " " obj.response {"</title>
  </head>
  <body>
    <h1>Error "} obj.status " " obj.response {"</h1>
    <p>"} obj.response {"</p>
    <h3>Guru Meditation:</h3>
    <p>XID: "} req.xid {"</p>
    <address><a href="http://www.varnish-cache.org/">Varnish</a></address>
  </body>
</html>
"};
    deliver;
}


--
Michael




More information about the varnish-misc mailing list