thread_pool_max - is it total of all thread pools?

Ken Brownfield kb+varnish at
Thu Jul 15 22:07:50 CEST 2010

The min is per pool, the max is aggregate.  That was a little confusing to me too, at first.

Memory (stacks) is the primary bottleneck; you'll run out RAM long before modern kernels have trouble with thread counts.

Note that increasing the thread count is only useful (vs being a crutch for a bad backend) for long-lived or unreliable backend requests and long-lived client requests (mainly HTTP keepalives).  Past around double your CPU core count is all you'd need if Varnish were purely CPU-bound.  And that will happen only with many gigabits of traffic. :-)

So, assuming you're not obscuring some sort of failure up- or down-stream from Varnish, I'd tune your max to something like 2-3x your steady state worker count, and increase as necessary.

Hope it helps,

On Jul 15, 2010, at 10:19 AM, Caunter, Stefan wrote:

> Hi, running varnish on dual processor, dual core system with 4GB ram, we hit thread pool limit (500) this morning, and so are defining 4 thread pools, 200 min, and a 2500 maximum limit.
> I now see 800 threads created on start. I cannot see in the docs anything that says max limit is for all thread pools. We’ve set kern.threads.max_threads_per_proc to 4096 and increased the other tuning settings.
> Can we assume thread_pool_max is the summary of all thread pools?
> Can we get the thread pool maximum higher with better hardware and a custom kernel set for higher tuning settings?
> Stefan Caunter :: Senior Systems Administrator :: TOPS
> e: scaunter at  ::  m: (416) 561-4871
> _______________________________________________
> varnish-misc mailing list
> varnish-misc at

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the varnish-misc mailing list