Threads + thread queue length

Viktor Villafuerte viktor.villafuerte at optusnet.com.au
Fri Nov 13 00:07:19 CET 2015


Hi Andreas,

On Thu 12 Nov 2015 13:55:01, Viktor Villafuerte wrote:
> >From Varnish source code:
> 
> PARAM(
>         /* name */      thread_pool_add_delay,
>         /* tweak */     tweak_timeout,
>         /* var */       thread_pool_add_delay,
>         /* min */       0.000,
>         /* max */       none,
>         /* default */   0.000,
>         /* units */     seconds,
>         /* flags */     0| EXPERIMENTAL,
>         /* s-text */
>         "Wait at least this long after creating a thread.\n"
>         "\n"
>         "Some (buggy) systems may need a short (sub-second) delay between "
>         "creating threads.\n"
>         "Set this to a few milliseconds if you see the 'threads_failed' "
>         "counter grow too much.\n"
>         "Setting this too high results in insuffient worker threads.\n",
>         /* l-text */    "",
>         /* func */      NULL
> )
> 
> which would make the value SECONDS
> 
> BUT
> 
> >From Varnish docs:
> 
> -p thread_pool_add_delay=2 (default: 20ms, default in master: 2ms)
> Reducing the add_delay lets you create threads faster which is essential
>     - specially at startup - to avoid filling up the queue and dropping requests.
> 

The above section is taken from Varnish website. I guess it does not
actually say that the unit value is seconds or milliseconds but I do
find this confusing as it strongly (IMHO) suggests that the value is
milliseconds.

Also possibly there are other better resources on the web that state
this clearly and I didn't find.. could be my bad

v



> 
> 
> v
> 
> 
> 
> 
> On Thu 12 Nov 2015 12:40:27, Viktor Villafuerte wrote:
> > I think I might have found the problem here.. :/
> > 
> > thread_pool_add_delay
> > 
> > the doco says that the values are in milliseconds but if I set this to 2
> > (which should be 2ms) it makes the server handle traffic very badly and
> > only very gradually increases perfomance.. However if I set this to 0
> > then everything runs immediately and well. Furthermore in the docs it
> > says:
> > 
> > Reducing the add_delay lets you create threads faster which is
> > essential - specially at startup - to avoid filling up the queue and
> > dropping requests.
> > 
> > which would exactly fit my (sad) scenario below..
> > 
> > 
> > Could anybody confirm that the value is in milliseconds and not in
> > seconds?
> > 
> > thanks
> > 
> > v
> > 
> > 
> > 
> > On Wed 11 Nov 2015 09:52:52, Viktor Villafuerte wrote:
> > > I'm bumping this 'thread' up to the top since CJ Ess has just asked a
> > > question related to threads also.. I hate doing this but I'm hoping that
> > > somebody could (maybe) answer this too..?
> > > 
> > > v
> > > 
> > > On Mon 12 Oct 2015 15:17:05, Viktor Villafuerte wrote:
> > > > Hi all you carpenters and other Varnish using folk,
> > > > 
> > > > There are couple of things in the output of varnishstat that puzzle me a
> > > > little..
> > > > 
> > > > MAIN.sess_drop               0         0.00 Sessions dropped
> > > > MAIN.sess_dropped            3809332         0.32 Sessions dropped for
> > > > thread
> > > > MAIN.fetch_no_thread           58746         0.01 Fetch failed (no
> > > > thread)
> > > > MAIN.pools                         2          .   Number of thread pools
> > > > MAIN.threads                    1255          .   Total number of
> > > > threads
> > > > 
> > > > I've got 2 pools of 4000 threads set in Varnish config and
> > > > man varnish-counters says:
> > > > 
> > > > sess_drop
> > > > Count of sessions silently dropped due to lack of worker thread.
> > > > 
> > > > sess_dropped
> > > > Number of times session was dropped because the queue were too long
> > > > already. See also parameter queue_max.
> > > > 
> > > > fetch_no_thread
> > > > beresp fetch failed, no thread available
> > > > 
> > > > 
> > > > This tells me that there's no lack of worker threads (good!), but the
> > > > thread queue length does get too long and subsequently sessions get
> > > > dropped (bad!). Also backend fetch failed due to no threads being
> > > > available (what?)
> > > > 
> > > > 
> > > > Now the puzzling bit :)
> > > > 
> > > > 1) why would the thread queue get too long if there seems to be NO lack
> > > > of threads to use?
> > > > 
> > > > 2) why would there be no threads if there seems to be NO lack of threads
> > > > 
> > > > 3) 'See also the parameter queue_max' - but I cannot find any mention of
> > > > such parameter anywhere around? Where does this ellusive paramater live
> > > > then?
> > > > 
> > > > 
> > > > Could anybody shed bit of light on this for me?
> > > > 
> > > > 
> > > > 
> > > > 
> > > > -- 
> > > > Regards
> > > > 
> > > > Viktor Villafuerte
> > > > Optus Internet Engineering
> > > > t: +61 2 80825265
> > > > 
> > > > _______________________________________________
> > > > varnish-misc mailing list
> > > > varnish-misc at varnish-cache.org
> > > > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
> > > 
> > > -- 
> > > Regards
> > > 
> > > Viktor Villafuerte
> > > Optus Internet Engineering
> > > t: +61 2 80825265
> > > 
> > > _______________________________________________
> > > varnish-misc mailing list
> > > varnish-misc at varnish-cache.org
> > > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
> > 
> > -- 
> > Regards
> > 
> > Viktor Villafuerte
> > Optus Internet Engineering
> > t: +61 2 80825265
> > 
> > _______________________________________________
> > varnish-misc mailing list
> > varnish-misc at varnish-cache.org
> > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
> 
> -- 
> Regards
> 
> Viktor Villafuerte
> Optus Internet Engineering
> t: +61 2 80825265
> 
> _______________________________________________
> varnish-misc mailing list
> varnish-misc at varnish-cache.org
> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc

-- 
Regards

Viktor Villafuerte
Optus Internet Engineering
t: +61 2 80825265



More information about the varnish-misc mailing list