Search squid archive

Re: Slow memory leak

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Eliezer,

Thanks for the feedback. This memory leak causes real-world problems for me, as squid starts to do a lot of swapping when it exhausts physical RAM, and things slow down. Also, the sheer magnitude of the memory numbers is just ridiculous... squid easily grows to in excess of 10GB of resident memory as shown in top. I've got the servers restarting their squids periodically, but that's a pretty bad solution.

Here is my squid.conf. Note two include files... squid_ns5_allowed_ips.conf and squid_blacklist_ips.conf . These are lists of IPs in an ACL. The allowed IPs one has lots of entries (almost 20,000) and that's the only thing I think is really unusual about my setup, so I'm wondering if that is exposing a leak somehwere.


##### BEGIN squid.conf #######
http_port 5000
http_port 5001
http_port 5002
http_port 5003
http_port 5020
http_port 5021
http_port 5022
http_port 5023

cache_mgr [omitted]
visible_hostname [omitted]
max_filedesc 32768

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern .		0	20%	4320
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern .		0	20%	4320
acl demo_sites dstdomain .raynersoftware.com
acl banned_sites dstdomain client.versiontracker.com
acl banned_sites dstdomain .rapidshare.com

# allow yuki2
acl a_ips src 64.62.244.50/32

include /etc/squid/squid_ns5_allowed_ips.conf
include /etc/squid/squid_blacklist_ips.conf

# acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny to_localhost
http_access deny banned_sites
http_access deny banned_ips
http_access allow demo_sites
# we shorten allowed_ips to a_ips to save space in our include file
http_access allow a_ips
http_access deny all
http_reply_access allow all
#icp_access allow all

pid_filename /var/run/squid.pid 

coredump_dir /var/spool/squid

via off
forwarded_for off
##### END squid.conf #######





When I do a mgr:info on one particular box, I get this: 

Memory usage for squid via mallinfo(): 
        Total space in arena:  1101288 KB 
        Ordinary blocks:       1098718 KB    287 blks 
        Small blocks:               0 KB      0 blks 
        Holding blocks:         17636 KB      9 blks 
        Free Small blocks:          0 KB 
        Free Ordinary blocks:    2569 KB 
        Total in use:          1116354 KB 100% 
        Total free:              2569 KB 0% 
        Total size:            1118924 KB 
Memory accounted for: 
        Total accounted:       284679 KB  25% 
        memPool accounted:     284679 KB  25% 
        memPool unaccounted:   834245 KB  75% 
        memPoolAlloc calls: 620095300 
        memPoolFree calls:  640694955 

Yet in ps, I see this: 

squid     2576  1.1 32.5 5388508 5314184 ?     S    Sep05  92:51 (squid) -f /etc/squid/squid.conf 

So, squid is using 5GB of RAM yet it only knows about 1 of those GB. 





Thanks
-Ty





On Sep 26, 2012, at 11:32 AM, Eliezer Croitoru <eliezer@xxxxxxxxxxxx> wrote:

> On 9/26/2012 8:11 PM, tcr@xxxxxxxxxxxx wrote:
>> Reposting this because I posted the original via the nabble site and it didn't get mailed out to the list....
>> 
>> 
>> I posted a while ago about this but didn't get any replies. I run squid servers which handle heavy sustained traffic (50-100Mbps per server is not unusual). The squid processes' memory footprints all grow without bounds. I am running various different Squid versions from 2.7 to 3.2.1 on the different servers, and all versions exhibit this problem.
>> 
>> I have tried all the debugging steps I've been able to find- playing around with cache sizes, changing the memory directives in the conf files, etc. It just looks like a plain old leak though, because these processes will exhaust 16GB of RAM over the course of a week. When I look at the cache mgr info page, its accounting of memory usage is nowhere near the actual size shown in top.
>> 
>> As for my config, the servers are IPv4 only, they grant access based on a lengthy ACL of allowed IPs. This ACL comes from a text file.
>> 
>> If anybody has any ideas, I'd really appreciate it. If not, can someone at least tell me how to best go about debugging a leak in squid? I am ok with poking around in valgrind or whatever, but I'm hoping someone can steer me in the right direction to start.
>> 
>> Thank you.
>> -Ty
>> 
> Post your squid.conf and other data that you have.
> commands you have used?
> You should notice that "top" shows Virt and RES which is a bit different.
> my server is using about 800MB of ram and free+top shows about 1300-1400MB used due to somethings.
> you can try to use HTOP to see a more colorful picture that can give you another angle on the memory usage.
> 
> 50-100Mbps is not how you should measure traffic (in most cases) load but more in Requests Per Second.
> I have one server that serves more then 100Mps but with only couple RPS which only strains some memory and cpu for the task.
> 
> you can also take a look at your squid proxy used such as proxy using:
> top -u proxy
> which will give you only the squid user process.
> then you can calculate the VIRT RES SHR and %MEM manually to see what and how.
> for example:
>  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
> 7765 proxy     20   0  215m 153m 2744 S    0  7.7   3:29.51 squid
> 7768 proxy     20   0  107m  44m 2496 S    0  2.3   0:44.98 squid
> 7794 proxy     20   0 30708  380  156 S    0  0.0   0:00.46 unlinkd
> 8608 proxy     20   0 40600 9328 1236 S    0  0.5   0:00.90 run.rb
> 8610 proxy     20   0 40932 9788 1408 S    0  0.5   0:00.92 run.rb
> 
> you see that one squid uses 7.7 % and other one 2.3(of 2GB)
> 
> Regards,
> Eliezer
> -- 
> Eliezer Croitoru
> https://www1.ngtech.co.il
> IT consulting for Nonprofit organizations
> eliezer <at> ngtech.co.il




[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux