RT Tuning tips from our live environment

Hello,

I have recently done a fair amount of tuning on a fairly large RT
installation. We have about 100 queues with a few hundred thousand
tickets in the database. We get about 1500 new tickets a day, which are
worked on by about 300 users.

I have found the following few things which have given the system a
large performance increase.

  • If using MySQL, consider mounting a small memory file system and
    setting this as the tmpdir for the database server. ORDER BY causes
    mysql to use a filesort and doing this in memory is far faster than
    going out to disk.

  • Query caching is essential as RT does a large number of similar
    SELECT’s to check for user access.

  • I had sucess by adding the following indexes:

alter table Tickets add index (Owner,id,EffectiveId,Status,Type);
alter table Queues add index(Disabled,Name QueuesName);

All the best,

George

George Barnett
Reality Engineer

m: (+44) 778 884 7205
e: george@alink.co.za

Naeser’s Law: You can make it foolproof, but you can’t make it
damnfoolproof.

Nice tips. Could you post it on the wiki?

George Barnett wrote:

Hello,

I have recently done a fair amount of tuning on a fairly large RT
installation. We have about 100 queues with a few hundred thousand
tickets in the database. We get about 1500 new tickets a day, which
are worked on by about 300 users.

I have found the following few things which have given the system a
large performance increase.

  • If using MySQL, consider mounting a small memory file system and
    setting this as the tmpdir for the database server. ORDER BY causes
    mysql to use a filesort and doing this in memory is far faster than
    going out to disk.

Please, add small step by step instructions how to configure it.

  • Query caching is essential as RT does a large number of similar
    SELECT’s to check for user access.
  • I had sucess by adding the following indexes:

alter table Tickets add index (Owner,id,EffectiveId,Status,Type);
alter table Queues add index(Disabled,Name QueuesName);

Reverse field order(Name, Field) would be better I think.