[Varnish] #538: [varnish-2.0.4] Potential Memory Leak
Varnish
varnish-bugs at projects.linpro.no
Mon Nov 9 19:35:29 CET 2009
#538: [varnish-2.0.4] Potential Memory Leak
-------------------------------+--------------------------------------------
Reporter: pprocacci | Owner: phk
Type: defect | Status: new
Priority: high | Milestone:
Component: varnishd | Version: trunk
Severity: major | Resolution:
Keywords: Memory Leak 2.0.4 |
-------------------------------+--------------------------------------------
Comment (by kb):
Your pmap shows that varnish is correctly allocating the 300MB you
specified. The rest of the RAM is spent on the compiled config (always
about 80MB in my experience) and 10MB of preallocated stack per worker
thread. 10MB is apparently your distribution's default stacksize (see
'ulimit -a' or 'limit').
There's no leak here, just a fact of life with pthreads. Because you have
a very small cache size, the overhead ratio is exaggerated.
You can reduce the memory usage of each pthread by reducing your default
stacksize. Run 'ulimit -s 1024' or 'limit stacksize 1024' before starting
varnishd and you should see the memory use drop from 600MB to something
like 450MB, and scaling out worker threads will become an order of
magnitude less RAM-intensive.
Like every other server out there that lets you specify RAM usage for a
cache (e.g., MySQL, squid) there are many other factors that determine
memory usage -- some within the app's control, some not. Managing MySQL
memory usage is extremely similar to varnishd -- a base cache, thread-
specific buffers, and the default stacksize that comes preallocated with
every pthread. MySQL explicitly sets the stacksize for pthreads it
creates to 128KB because of the high memory usage that on the surface
looks like a leak.
FWIW, I have a patch to varnishd that allows control of the worker
threads' stacksize in much the same way MySQL controls it. See #572 if
you're interested.
Ken
--
Ticket URL: <http://varnish.projects.linpro.no/ticket/538#comment:10>
Varnish <http://varnish.projects.linpro.no/>
The Varnish HTTP Accelerator
More information about the varnish-bugs
mailing list