Hi! Our Squid hits the OS imposed memory limit of 1500 MB (data segment
only) and dies after less than a day of work. Rather than performing the
usual steps such as lowering cache_mem or increasing the memory limit, I
wanted to try to find out why Squid's using that much. Here come some
parts of "Memory Utilization" page in cachemgr.cgi taken 1 minute before
Squid died with the error:
FATAL: xcalloc: Unable to allocate 1 blocks of 4108 bytes!
Pool Obj Size Allocated
(bytes) (#) (KB) high (KB)
MemObject 148 5312 768 768
mem_node 4108 9210 36948 36948
StoreEntry 48 4143221 194214 194214
MD5 digest 16 4143221 64738 64738
Total - 8420732 308233 308233
Cumulative allocated volume: 2.68 GB
Current overhead: 46571 bytes (0.015%)
Idle pool limit: 300.00 MB
memPoolAlloc calls: 23471003
memPoolFree calls: 15052272
Idle pool usage was very low at the moment: 2373 KB
relevant squid.conf parts changed from defaults:
cache_mem 500 MB
maximum_object_size 8 MB
maximum_object_size_in_memory 12 KB
cache_replacement_policy heap GDSF
memory_replacement_policy heap GDSF
cache_dir aufs /cache 50000 128 256
memory_pools_limit 300 MB
Where did the difference between Squid's actual usage (1504MB one minute
before the crash) and the accounted 8420732 KB go?
Using Squid 2.6.STABLE13 on FreeBSD 6.2. Please let me know if you need
more information.
Thank you in advance for any insights.