[rt-users] RT 3.4.5 slow loading/large query for RT: At a Glance page]]

Tim kruz at chariot.net.au
Wed Feb 22 23:28:54 EST 2006



Tim wrote:
>
>
> Jesse Vincent wrote:
>>
>> On Mon, Feb 20, 2006 at 02:37:33PM +1030, Tim wrote:
>>  
>>> Hi All,
>>>
>>> I was recently tasked with upgrading RT from 3.0.11 to 3.4.5 for my 
>>> company, basicaly we use RT to handle all incoming requests from 
>>> customers as well as internal requests between branches, so the 
>>> database is very large 650k + tickets from a large number of 
>>> individual users - pretty much anyone that emails the company on the 
>>> specified support address.
>>>
>>> We have a front end box with SearchBuilder 1.38, Apache 2.0.54, 
>>> mod_perl 2,RT 3.4.5 (p4 2.8 ghz 1.5 gig ram) and a backend box, 
>>> running the mysql RT database Fedora Core 4, Mysql 4.1.16 (p4 3 ghz 
>>> 4 gig ram 10k rpm WD raptor drive. The upgrade process was all very 
>>> smooth ( I dumped the old DB - transferred it to the new server, 
>>> configured the appropriate my.cnf settings, imported the database 
>>> and then ran the schema upgrades) and in initial testing everything 
>>> seemed fine, however when all the support staff started logging on 
>>> this particular query grinds the server to a halt by maxing out the 
>>> CPU on the rt-sql server.
>>>
>>>     
>>
>> Can you tell us how you've tuned and optimized your mysql instance?
>>   
>
> Ok, basically the only extra index that we have that seems to speed 
> things along is this one "create index mbowe_MemberId on 
> CachedGroupMembers(MemberId)"
>
> An analyze was run on all tables.
>
> Interestingly the query that I posted previously seems to be attached 
> to the "25 Highest priority tickets that I have requested". By 
> disabling this element from the At a Glance page performance is now 
> quite snappy with only a small delay when loading the At a Glance page.
>
> Below is the mysqld section of the my.cnf that was used on the new 
> server before the database import
>
> [mysqld]
> port            = 3306
> socket          = /var/lib/mysql/mysql.sock
> skip-locking
> key_buffer = 384M
> max_allowed_packet = 16M
> table_cache = 512
> sort_buffer_size = 2M
> read_buffer_size = 2M
> read_rnd_buffer_size = 8M
> myisam_sort_buffer_size = 64M
> thread_cache_size = 8
> query_cache_type = 1
> query_cache_size = 128M
> # Try number of CPU's*2 for thread_concurrency
> thread_concurrency = 4
> # Default to using old password format for compatibility with mysql 3.x
> # clients (those using the mysqlclient10 compatibility package).
> old_passwords=1
>
> # Don't listen on a TCP/IP port at all. This can be a security 
> enhancement,
> # if all processes that need to connect to mysqld run on the same host.
> # All interaction with mysqld must be made via Unix sockets or named 
> pipes.
> # Note that using this option without enabling named pipes on Windows
> # (via the "enable-named-pipe" option) will render mysqld useless!
> #
> #skip-networking
>
> # Replication Master Server (default)
> # binary logging is required for replication
> #log-bin
>
> # required unique id between 1 and 2^32 - 1
> # defaults to 1 if master-host is not set
> # but will not function as a master if omitted
> server-id       = 1
>
> # Uncomment the following if you are using InnoDB tables
> innodb_data_home_dir = /var/lib/mysql/
>
> #innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
> innodb_data_file_path = ibdata1:10M:autoextend
>
> innodb_log_group_home_dir = /var/lib/mysql/
> innodb_log_arch_dir = /var/lib/mysql/
>
> # You can set .._buffer_pool_size up to 50 - 80 %
> # of RAM but beware of setting memory usage too high
> innodb_buffer_pool_size=1G
> innodb_additional_mem_pool_size=20M
>
> # Set .._log_file_size to 25 % of buffer pool size
> innodb_log_file_size=250M
> innodb_log_buffer_size=12M
>
> innodb_flush_log_at_trx_commit=1
> innodb_lock_wait_timeout=50
>
> #
> # Uncomment the next lines if you want to use them
> #set-variable = innodb_thread_concurrency=5
>
>
> Any suggestions are most welcome =]
>
>
>
>

I forgot to include the contents of the MyRequests Element which can be 
found below

<&|/Elements/TitleBox,
       title => loc("[_1] highest priority tickets I requested...", $rows),
       title_href => "Search/Results.html".$QueryString &>
<& /Elements/TicketList,
       Format => "'<a 
href=\"$RT::WebPath/Ticket/Display.html?id=__id__\">__id__</a>/TITLE:#', 
'<a 
href=\"$RT::WebPath/Ticket/Display.html?id=__id__\">__Subject__</a>/TITLE:Subject', 
QueueName, ExtendedStatus, 'Priority/TITLE:Pri', OwnerName",
       Query => $Query,
       OrderBy => 'Priority',
       Order => 'DESC',
       ShowNavigation => 0,
       Rows => $rows

       &>
</&>
<%init>
my $rows = $RT::MyRequestsLength;

my $Query = "Requestor.EmailAddress = 
'".$session{'CurrentUser'}->EmailAddress."' AND (Status = 'new' OR 
Status = 'open' OR Status = 'stalled')";

my $QueryString = "";
$QueryString = '?' . $m->comp('/Elements/QueryString',
                             Query => $Query,
                             Order => 'DESC',
                             OrderBy => 'Priority') if ($Query);

</%init>

/
/






More information about the rt-users mailing list