RE: [squid-users] xmalloc and out of memory errors in messages log

From: Mike Mitchell <Mike.Mitchell@dont-contact.us>
Date: Mon, 13 Oct 2003 10:43:11 -0400

I've been having a similar problem and it's been present in all Squid version 2 releases, not just 2.5STABLE4. I've seen it in all releases of 2.4 and 2.3.
I have three identical squid servers, each with two 16GB cache directories. Right now cachemgr reports ~265 MB of memory accounted for, but sbrk and mallinfo say ~700 MB of memory is used. The sbrk and mallinfo reports continue to increase as the system runs, but the "Memory accounted for:" hovers around 265 MB. See ftp://ftp.sas.com/pub/nam/squid-mem.png for a graph that shows how our memory usage increases. The graph is with a full cache and shows a week's worth of data following a restart.

I've tried both the standard malloc library and compiling with --enable-dlmalloc and have gotten the same results.
I've seen this problem on HP-UX 10.20, Red Hat 7.2, Red Hat 7.3, and now Red Hat ES 2.1.

I eventually wrote a script that checks if squid is too large. I then call that script in the nightly cron job and restart squid if the script returns true. Here's the script for Linux:

#!/usr/bin/perl
# returns 1 if the squid process consumes more than
# the passed-in percent of physical memory, returns 0
# otherwise. Typical use:
# squid_too_big 45
#
# Can also pass in the number of megabytes instead of
# percent:
# squid_too_big 300M
#
$Debug = 0;
$lim = 0;
$per = 0;
if ($ARGV[0] =~ /m/i) {
    $lim = $ARGV[0];
    $lim =~ s/[^\d]//;
    $lim = int($lim) * 1024 * 1024;
} else {
    $per = $ARGV[0];
    $per =~ s/[^\d]//;
    $per = int($per);
}
$per = 45 if ($per <= 0 || $per > 100);

# Get the physical memory in the machine
open(MEM, "</proc/meminfo");
while(<MEM>) {
    next unless /^Mem:\s/;
    ($jnk, $tot, $used, $free) = split(' ');
}
close(MEM);
exit 0 if ($tot <= 0);

# calculate the maximum allowed
$lim = $tot * $per / 100 if ($lim <= 0 || $lim > $tot);

#
# Get the amount of memory the squid process is using
#
$tot = 0;
open(PS, "ps -efl |");
while(<PS>) {
    next unless /\s\(squid\)$/;
    ($jnk, $jnk, $jnk, $jnk, $jnk, $jnk, $jnk, $jnk, $jnk, $tmp, $jnk)
        = split(' ');
    $tmp *= 4096; # convert memory pages to bytes
    $tot = $tmp if ($tmp > $tot);
}
close(PS);

print "limit = $lim, squid = $tot\n" if ($Debug);

exit 1 if ($tot > $lim);
exit 0;
 
-----Original Message-----
From: Tay Teck Wee [mailto:wolfpacks01@yahoo.com.sg]
Sent: Thursday, October 09, 2003 10:33 PM
To: Squid Users
Subject: Re: [squid-users] xmalloc and out of memory errors in messages log

Can anyone help? Thanks.

--
Wolf 
 --- Tay Teck Wee <wolfpacks01@yahoo.com.sg> wrote: > 
--- Robert Collins <robertc@squid-cache.org> wrote:
> >
> On Tue, 2003-10-07 at 17:17, Tay Teck Wee wrote:
> > 
> > > The Total Accounted Memory (seen from cachemgr)
> > always
> > > shows about 60-70% of the size of the squid
> > process,
> > > i.e. when squid process is at 500M, Total
> > Accounted
> > > Memory is about 350M. This ratio is maintained
> > > throughout the squid process lifetime.
> > > 
> > > One thing peculiar is that under Memory usage
> for
> > > squid via mallinfo(): the total in use is always
> > 100%.
> > > 
> > > 
> > > From Memory Utilization->In Use->KB column, the
> > top 3
> > > are:
> > > StoreEntry 356131
> > > MD5 digest 118711
> > > mem_node 65677
> > > 
> > 
> > Well you've got 356MB of StoreEntries - cache
> index
> > elements. How much
> > mem cache and disk cache do you ahve in your
> > configuration?
> 
> cache_mem 64 MB
> cache_dir aufs /cdata1 16000 36 256
> cache_dir aufs /cdata2 16000 36 256
> cache_dir aufs /cdata3 16000 36 256
> 
> BTW the physical RAM is 2G.
> 
> Thanks.
> 
> > 
> > Cheers,
> > Rob
> > 
> > 
> > --
> > GPG key available at:
> >
> <http://members.aardvark.net.au/lifeless/keys.txt>.
> > 
> 
> > ATTACHMENT part 2 application/pgp-signature
> name=signature.asc
>  
> 
> __________________________________________________
> Do You Yahoo!?
> A free party for the most "shiok" photo!
> http://sg.yahoo.com/shiok 
__________________________________________________
Do You Yahoo!?
A free party for the most "shiok" photo! 
http://sg.yahoo.com/shiok
Received on Mon Oct 13 2003 - 08:44:14 MDT

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 17:20:28 MST