[rt-users] RT3 Performance Issues Update

Jon Masters jonathan at jonmasters.org
Wed Aug 11 07:12:06 EDT 2004


Hi all,

I have talked to a bunch of people about RT performance and at a recent 
conference discovered that I am certainly not alone. The MySQL logs show 
that queries are completing normally and the slow logs set to 1 second 
are completely empty. It is not MySQL.

However I have forced myself to play around more with perl and have been 
using an interactive mod_perl debugging session to determine that there 
is potentially a problem in the DBIx::SearchBuilder::Record::Cacheable 
code as it likes to go and sit in big long loops looking for stuff that 
has expired from its object cache. Can I turn off the cacheing and just 
use the database directly?

It likes running the expire code path hundreds of times, e.g.:

   DB<21> T
. = DBIx::SearchBuilder::Record::Cachable::_expire(ref(RT::Principal), 
'Transactions:id=742') called from file 
`/usr/local/share/perl/5.8.4/DBIx/SearchBuilder/Record/Cachable.pm' line 174
. = 
DBIx::SearchBuilder::Record::Cachable::_gc_expired(ref(RT::Principal)) 
called from file 
`/usr/local/share/perl/5.8.4/DBIx/SearchBuilder/Record/Cachable.pm' line 328
$ = 
DBIx::SearchBuilder::Record::Cachable::_lookup_primary_cache_key(ref(RT::Principal), 
'Principals:PrincipalType=User,ObjectId=22') called from file 
`/usr/local/share/perl/5.8.4/DBIx/SearchBuilder/Record/Cachable.pm' line 92
. = 
DBIx::SearchBuilder::Record::Cachable::LoadByCols(ref(RT::Principal), 
'PrincipalType', 'User', 'ObjectId', 22) called from file 
`/opt/rt3/lib/RT/Record.pm' line 272
. = RT::Record::LoadByCols(ref(RT::Principal), 'ObjectId', 22, 
'PrincipalType', 'User') called from file 
`/opt/rt3/lib/RT/User_Overlay.pm' line 1126
$ = RT::User::PrincipalObj(ref(RT::User)) called from file 
`/opt/rt3/lib/RT/User_Overlay.pm' line 1454
$ = RT::User::HasRight(ref(RT::User), 'Object', ref(RT::Ticket), 
'Right', 'ShowTicket') called from file 
`/opt/rt3/lib/RT/Ticket_Overlay.pm' line 3949
$ = RT::Ticket::HasRight(ref(RT::Ticket), 'Principal', ref(RT::User), 
'Right', 'ShowTicket') called from file 
`/opt/rt3/lib/RT/Ticket_Overlay.pm' line 3913
$ = RT::Ticket::CurrentUserHasRight(ref(RT::Ticket), 'ShowTicket') 
called from file `/opt/rt3/lib/RT/Ticket_Overlay.pm' line 3860
$ = RT::Ticket::_Value(ref(RT::Ticket), 'EffectiveId') called from file 
`/usr/local/share/perl/5.8.4/DBIx/SearchBuilder/Record.pm' line 409
$ = 
DBIx::SearchBuilder::Record::__ANON__[/usr/local/share/perl/5.8.4/DBIx/SearchBuilder/Record.pm:409](ref(RT::Ticket)) 
called from file `/opt/rt3/lib/RT/Ticket_Overlay.pm' line 238
. = RT::Ticket::Load(ref(RT::Ticket), 1065) called from file 
`/opt/rt3/lib/RT/Interface/Web.pm' line 414
$ = HTML::Mason::Commands::LoadTicket(1065) called from file 
`/opt/rt3/share/html/Ticket/Display.html' line 87
. = 
HTML::Mason::Commands::__ANON__[/opt/rt3/share/html/Ticket/Display.html:59]('id', 
1065, 'id', 1065) called from file 
`/usr/local/share/perl/5.8.3/HTML/Mason/Component.pm' line 134
. = HTML::Mason::Component::run(ref(HTML::Mason::Component::FileBased), 
'id', 1065, 'id', 1065) called from file 
`/usr/local/share/perl/5.8.3/HTML/Mason/Request.pm' line 1074
. = eval {...} called from file 
`/usr/local/share/perl/5.8.3/HTML/Mason/Request.pm' line 1068
. = HTML::Mason::Request::comp(undef, undef, 'id', 1065, 'id', 1065) 
called from file `/usr/local/share/perl/5.8.3/HTML/Mason/Request.pm' 
line 760
. = 
HTML::Mason::Request::call_next(ref(HTML::Mason::Request::ApacheHandler), 
'id', 1065) called from file `/opt/rt3/share/html/autohandler' line 199
$ = 
HTML::Mason::Commands::__ANON__[/opt/rt3/share/html/autohandler:212]('id', 
1065) called from file 
`/usr/local/share/perl/5.8.3/HTML/Mason/Component.pm' line 134
$ = HTML::Mason::Component::run(ref(HTML::Mason::Component::FileBased), 
'id', 1065) called from file 
`/usr/local/share/perl/5.8.3/HTML/Mason/Request.pm' line 1072
. = eval {...} called from file 
`/usr/local/share/perl/5.8.3/HTML/Mason/Request.pm' line 1068
$ = HTML::Mason::Request::comp(undef, undef, undef, 'id', 1065) called 
from file `/usr/local/share/perl/5.8.3/HTML/Mason/Request.pm' line 338
$ = eval {...} called from file 
`/usr/local/share/perl/5.8.3/HTML/Mason/Request.pm' line 338
. = eval {...} called from file 
`/usr/local/share/perl/5.8.3/HTML/Mason/Request.pm' line 297
$ = HTML::Mason::Request::exec(ref(HTML::Mason::Request::ApacheHandler)) 
called from file 
`/usr/local/share/perl/5.8.3/HTML/Mason/ApacheHandler.pm' line 134
. = eval {...} called from file 
`/usr/local/share/perl/5.8.3/HTML/Mason/ApacheHandler.pm' line 134
$ = 
HTML::Mason::Request::ApacheHandler::exec(ref(HTML::Mason::Request::ApacheHandler)) 
called from file 
`/usr/local/share/perl/5.8.3/HTML/Mason/ApacheHandler.pm' line 792
$ = 
HTML::Mason::ApacheHandler::handle_request(ref(HTML::Mason::ApacheHandler), 
ref(Apache)) called from file `/opt/rt3/bin/webmux.pl' line 145
. = eval {...} called from file `/opt/rt3/bin/webmux.pl' line 145
$ = RT::Mason::handler(ref(Apache)) called from file `/dev/null' line 0
$ = eval {...} called from file `/dev/null' line 0

Jon.





More information about the rt-users mailing list