Speeding up RT3

Sorry yes, I wrote out these answers first, but then forgot to send it
:slight_smile:

Almost all the queries appear to be on the acl, eg

SELECT * FROM ( SELECT limitquery.*,rownum limitrownum FROM ( SELECT
ACL.id from ACL, Groups, Principals, CachedGroupMembers WHERE
(ACL.RightName = ‘SuperUser’ OR ACL.RightName = ‘ShowTicket’) AND
Principals.Disabled = 0 AND CachedGroupMembers.Disabled = 0 AND
Principals.id = Groups.id AND Principals.id =
CachedGroupMembers.GroupId AND CachedGroupMembers.MemberId = ‘174’ AND (
ACL.ObjectType = ‘RT::System’ OR (ACL.ObjectType = ‘RT::Ticket’ AND
ACL.ObjectId = ‘1062173’) OR (ACL.ObjectType = ‘RT::Queue’ AND
ACL.ObjectId = ‘7’)) AND ( ( ACL.PrincipalId = Principals.id AND
ACL.PrincipalType = ‘Group’ AND (Groups.Domain = ‘SystemInternal’ OR
Groups.Domain = ‘UserDefined’ OR Groups.Domain = ‘ACLEquivalence’ OR
Groups.Domain = ‘Personal’)) ) ) limitquery WHERE rownum <= 1 ) WHERE
limitrownum >= 1

Something I should mention is I’ve edited the quicksearch Element to
have 4 columns, “new”,“Open”,“stalled” and “all”. Which will effect the
query numbers.

Well, yes. That will roughly double the number of queries we’re doing
there. I do expect that will negatively impact performance.

Acls are mostly per queue.

Switching to global acls where they make sense will also help
performance.

From what I can see though, most of the time is spent doing things other
than waiting on the database,

An example from the index.html page (25 queues, non superuser)

Time to display: 5.843325
Time in Database: 1.678154

And how much time in RT code?

I expect that you’ll have a lot of additional overhead when sending data
from the DB.

There’s a whole bunch of ACL precaching we could if you folks wanted to
contact me off list about development work.

Number of Query: 231

Where is 3.2-HEAD (not very used to subversion)

-bash-2.05b$ svn co svn://svn.bestpractical.com/rt/branches/3.2-HEAD
svn: URL ‘svn://svn.bestpractical.com/rt/branches/3.2-HEAD’ doesn’t
exist

/branches/3.2-RELEASE

I can come up with some specifics if its more helpful (eg, just load
index.html and then Exit )

More useful is a controlled set of 20 queries of the homepage, spaced 30
seconds apart.

Jesse

Hey, Sorry to take so long to get back to you. Busy busy, sure you
understand :slight_smile:

Sorry yes, I wrote out these answers first, but then forgot to send
it
:slight_smile:

Almost all the queries appear to be on the acl, eg

SELECT * FROM ( SELECT limitquery.*,rownum limitrownum FROM ( SELECT
ACL.id from ACL, Groups, Principals, CachedGroupMembers WHERE
(ACL.RightName = ‘SuperUser’ OR ACL.RightName = ‘ShowTicket’) AND
Principals.Disabled = 0 AND CachedGroupMembers.Disabled = 0 AND
Principals.id = Groups.id AND Principals.id =
CachedGroupMembers.GroupId AND CachedGroupMembers.MemberId = ‘174’
AND (
ACL.ObjectType = ‘RT::System’ OR (ACL.ObjectType = ‘RT::Ticket’ AND
ACL.ObjectId = ‘1062173’) OR (ACL.ObjectType = ‘RT::Queue’ AND
ACL.ObjectId = ‘7’)) AND ( ( ACL.PrincipalId = Principals.id AND
ACL.PrincipalType = ‘Group’ AND (Groups.Domain = ‘SystemInternal’ OR
Groups.Domain = ‘UserDefined’ OR Groups.Domain = ‘ACLEquivalence’ OR
Groups.Domain = ‘Personal’)) ) ) limitquery WHERE rownum <= 1 )
WHERE
limitrownum >= 1

Something I should mention is I’ve edited the quicksearch Element to
have 4 columns, “new”,“Open”,“stalled” and “all”. Which will effect
the
query numbers.

Well, yes. That will roughly double the number of queries we’re doing
there. I do expect that will negatively impact performance.

Acls are mostly per queue.

Switching to global acls where they make sense will also help
performance.

From what I can see though, most of the time is spent doing things
other
than waiting on the database,

An example from the index.html page (25 queues, non superuser)

Time to display: 5.843325
Time in Database: 1.678154

And how much time in RT code?

Well, I assume Time to display - Time in database, if you include mason
in the mix. I’m not sure how to go about separating mason specific stuff
from rt specific stuff.

I expect that you’ll have a lot of additional overhead when sending
data
from the DB.

There’s a whole bunch of ACL precaching we could if you folks wanted
to
contact me off list about development work.

Number of Query: 231

Where is 3.2-HEAD (not very used to subversion)

-bash-2.05b$ svn co svn://svn.bestpractical.com/rt/branches/3.2-HEAD
svn: URL ‘svn://svn.bestpractical.com/rt/branches/3.2-HEAD’ doesn’t
exist

/branches/3.2-RELEASE

Cool, tried that out, seems about that same (if I drop the Quicksearch
component back to standard, rather than our local version

I can come up with some specifics if its more helpful (eg, just load
index.html and then Exit )

More useful is a controlled set of 20 queries of the homepage, spaced
30
seconds apart.

I will see what I can come up with.

Jesse

This email and any files transmitted with it are confidential and intended solely for the
use of the individual or entity to whom they are addressed. Please notify the sender
immediately by email if you have received this email by mistake and delete this email
from your system. Please note that any views or opinions presented in this email are solely
those of the author and do not necessarily represent those of the organisation.
Finally, the recipient should check this email and any attachments for the presence of
viruses. The organisation accepts no liability for any damage caused by any virus
transmitted by this email.