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