Search squid archive

RE: squid: Memory utilization higher than expected since moving from 3.3 to 3.4 and Vary: working

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

 



The problem is that it is a "slow" leak - it takes some time (month) to find it...
Also it only happens on real live traffic with high volume plus high utilization of "Vary:"
Moving our prod environment to head would be quite a political issue inside our organization.
Arguing to go to the latest stable version 3.4.6 would be possible, but I doubt it would change a thing

In the meantime we have not restarted the squids yet, so we still got a bit of information available if needed.
But we cannot keep it up in this state much longer.

I created a core-dump, but analyzing that is hard.

Here the top strings from that 10GB core-file - taken via: strings corefile| sort | uniq -c | sort -rn | head -20).
This may give you some idea:
2071897 =0.7
1353960 Keep-Alive
1343528 image/gif
 877129 HTTP/1.1 200 OK
 855949  GMT
 852122 Content-Type
 851706 HTTP/
 851371 Date
 850485 Server
 848027 IEND
 821956 Content-Length
 776359 Content-Type: image/gif
 768935 Cache-Control
 760741 ETag
 743341 live
 720255 Connection
 677920 Connection: Keep-Alive
 676108 Last-Modified
 662765 Expires
 585139 X-Powered-By: Servlet/2.4 JSP/2.0

Another thing I thought we could do is:
* restart squids
* run mgr:mem every day and compare the daily changes for all the values (maybe others?)

Any other ideas how to "find" the issue?

Martin




-----Original Message-----
From: Amos Jeffries [mailto:squid3@xxxxxxxxxxxxx] 
Sent: Dienstag, 08. Juli 2014 11:40
To: squid-users@xxxxxxxxxxxxxxx
Subject: RE:  squid: Memory utilization higher than expected since moving from 3.3 to 3.4 and Vary: working

On 2014-07-08 19:38, Martin Sperl wrote:
> Well - there are 4 Points here:
> a) this is gradual behavior that takes month to accumulate
> b) extra used memory is much bigger than Cache (1.5x aprox), which
> looks wrong to me as the other parameters you have given
> (diskcache,...) are not
> c) we have not seen this behavior with 3.3 and have just switched to
> 3.4 two month ago and it is running since then showing this increase.
> d) if you look at the memory report (mgr:mem) which I have shared you
> find: 900MB for 542k HttpHeaderEntries and 2GB for 791k Short_Strings
> - and that is almost 3 out of 4.2G  for this report alone.
> 
> So I was guessing there was some sort of memory allocation bug or
> something - maybe something to do with the now working handling of
> "vary" headers, that triggers this memory leak.
> To me it looks as if those "Vary" nodes are not clean up properly and
> that is why we are slowly increasing memory...
> 

Hmm. Yes that does sound like what we call a pseudo-leak (same effects 
as a memory leak, but not an actual leak since the objects are still 
being reference-counted by something). The headers and HttpHeaderEntries 
are stored as collections of String's. The HttpHeaderEntries are 
ref-counted objects used by HttpRequest and HttpReply transaction 
objects, which are themselves ref-counted. If there are a lot of those 
being held onto for no reason this needs to be tracked down.

Are you in a position to test the 3.HEAD code to see if it is something 
we fixed already there or a new issue to debug from scratch?


> There are specially a few things in the msg:info block that made me 
> suspicious:
> Memory usage for squid via mallinfo():
>         Total space in arena:  -2064964 KB
>         Ordinary blocks:       2047465 KB 161900 blks
>         Small blocks:               0 KB      0 blks
>         Holding blocks:         38432 KB      9 blks
>         Free Small blocks:          0 KB
>         Free Ordinary blocks:   81875 KB
>         Total in use:           81875 KB -4%
>         Total free:             81875 KB -4%
>         Total size:            -2026532 KB
> Memory accounted for:
>         Total accounted:       1269447 KB -63%
>         memPool accounted:     9658055 KB -477%
>         memPool unaccounted:   -11684587 KB  -0%
>         memPoolAlloc calls: 507567155336
>         memPoolFree calls:  508713005568
> Especially those negative Numbers and percentages - but maybe that is
> just a reporting bug, which - if so - is hindering debugging the real
> thing

64-bit mallinfo() bugs produce corrupt output. The only uncorrupted 
values above are the memPool accounted KB size and probably the "calls" 
counts.


> 
> Thanks,
> 	Martin
> 
> P.s: it would be helpful if the output of mgr:mem would be formatted
> in a way that would allow it to get easily pasted into Excel or
> similar - no spaces in pool names would be sufficient...
> 

The report is a TSV spreadsheet. If you save it directly to a file then 
import into Excel selecting Tab separator instead of the default comma 
(CSV) it loads as a nice spreadsheet.

Amos


This message and the information contained herein is proprietary and confidential and subject to the Amdocs policy statement,
you may review at http://www.amdocs.com/email_disclaimer.asp





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

  Powered by Linux