Search squid archive

Re: Debugging slow access

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

 



On 10.12.14 17:09, Amos Jeffries wrote:

I'm looking for advice on figuring out what is causing intermittent
high CPU usage.

It appears that the connections gradually gain more and more notes with the key "token" (and values containing Kerberos tokens). I haven't been able to reproduce the problem reliably enough to determine if this is the root of the high CPU usage problem, but it certainly doesn't look right:

When an ACL is executed that requires the login name (e.g. the proxy_auth ACL, or an external ACL using the %LOGIN format specifier), Acl.cc:AuthenticateAcl() is called. This, in turn, calls UserRequest.cc:tryToAuthenticateAndSetAuthUser(), which calls UserRequest.cc:authTryGetUser(). Here we get a call to Notes.cc:appendNewOnly() which appends all the notes from checklist->auth_user_request->user()->notes.

I can see the appendNewOnly() call sometimes ends up appending a large number of "token" notes (I've observed requests with a couple of hundred "token" notes attached to them) - the number of notes increases each time a Kerberos authentication is performed. My suspicion is that this growth is unbounded and in some cases the number of notes could become large enough to be a significant performance hit.

A couple of questions spring to mind:

1. HelperReply.cc:parse() calls notes.add("token",authToken.content()) (i.e. it adds a token rather than replacing an existing one). As far as I can tell, Squid only ever uses the first "token" note, so maybe we should be removing the old notes when we add a new one?

[Actually, on closer inspection, NotePairs::add() appends to the end of the list but NotePairs::findFirst() finds the note closest to the start of the list. Unless I'm missing something, this means the newer "token" notes are added but never used?]

2. I'm not sure on how the ACL checklists and User objects are shared between connections/requests and how they are supposed to persist. It seems to me that there is something wrong with the sharing/persistence if we're accumulating so many "token" notes. As well as the performance problems, there could be some race conditions lurking here?

--
 - Steve Hill
   Technical Director
   Opendium Limited     http://www.opendium.com

Direct contacts:
   Instant messager: xmpp:steve@xxxxxxxxxxxx
   Email:            steve@xxxxxxxxxxxx
   Phone:            sip:steve@xxxxxxxxxxxx

Sales / enquiries contacts:
   Email:            sales@xxxxxxxxxxxx
   Phone:            +44-1792-824568 / sip:sales@xxxxxxxxxxxx

Support contacts:
   Email:            support@xxxxxxxxxxxx
   Phone:            +44-1792-825748 / sip:support@xxxxxxxxxxxx
_______________________________________________
squid-users mailing list
squid-users@xxxxxxxxxxxxxxxxxxxxx
http://lists.squid-cache.org/listinfo/squid-users




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

  Powered by Linux