[rt-users] Slow Ticket History 3.8.8

Torsten Brumm torsten.brumm at googlemail.com
Tue Sep 7 07:45:27 EDT 2010


Hi Justin,
just created inside a RT Test VM (slow one with 500mb ram) a single ticket
with around 60 replies and some comments. Tested the speed with different
users

1. root user to open this ticket: around 26 sec -> 870 single sql queries in
around 4 sec! (Queries: http://pastebin.com/7Yekfx2Y)
2. user with full access (take, own, modify etc): around same time and
queries like root (Queries: http://pastebin.com/U0HnPcJL)
3. user with less rights (no take, no own, only showticket, seequeue): time
around 15 sec and 600 sql queries in around 2 sec! (Queries:
http://pastebin.com/fXDHu6im)

After this the apache starts to render the page from the results and push
them to the browser. The page is for my few comments/replies already 206KB
without any apache optimizations

After adding:

        SetOutputFilter DEFLATE
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$  no-gzip dont-vary
        SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
        ExpiresActive On
        ExpiresByType text/css "A604800"
        ExpiresByType image/x-icon "A31536000"
        ExpiresByType image/gif "A604800"
        ExpiresByType image/jpg "A604800"
        ExpiresByType image/jpeg "A604800"
        ExpiresByType image/png "A604800"
        ExpiresByType application/x-javascript A3600
        Header set Cache-Control "must-revalidate"

to the rt vhost, the page load time goes down from 26 sec to 8 sec and from
206 kb to 10kb

you should try.

Torsten

2010/9/7 Justin Hayes <justin.hayes at openbet.com>

> Well we've captured the time for all the queries run for our long ticket
> (which takes ~20secs to generate).
>
> Total query time is 0.871493s
>
> So it's not the DB.
>
> Justin
>
> -------------------------------------------------
> Justin Hayes
> OpenBet Support Manager
> justin.hayes at openbet.com
>
> On 7 Sep 2010, at 11:13, Torsten Brumm wrote:
>
> Hi Justin,
> just found this threat, sounds interessting.
>
> What i read so far: You have 1 quad core system with 8GB RAM, running both
> WEB and DB, correct?
>
> Think you should follow Raed's hints first to log the queries generated
> with RT
>
> In terms of debug; if you have not done this yet enable DBIx-SearchBuilder
> StatementLog
> Set($StatementLog,’debug’);  in your etc/RT_SiteConfig.
>
> I'm sure you will find some funny queries. Normally the Query Log of
> default MySQL can only log queries taking longer than a second, but in your
> case i think, you will have several much faster queries but in summary they
> take longer - but you can't find in mysql-slow log.
>
> Some more question regarding your hardware and setup.
>
> 1. One Server / quad core (hyper threating) -> how many threats for
> Mysql/Postgresql? / 8 GB Ram
> 2. Hard Disk Setup? (logfiles and db storred on different HDD's? Any I/O
> Problems?)
> 3. RT Rights Setup, does the user performance is faster or slower than the
> performance with root user?
>
> Some more information?
>
> We're running also a larger RT Instance with dedicated hardware for DB and
> Webservers with no huge perferomance bottlenacks.
>
> Tob
>
> 2010/9/7 Justin Hayes <justin.hayes at openbet.com>
>
>> I *think* we're just CPU bound. Roy's webservers are 3.6ghz so quite a bit
>> faster than ours. We're going to try it on a faster server and that should
>> drop our times. Guess we just wanted to explore all avenues before throwing
>> hardware at the problem.
>>
>> Justin
>>
>> -------------------------------------------------
>> Justin Hayes
>> OpenBet Support Manager
>> justin.hayes at openbet.com
>>
>> On 7 Sep 2010, at 10:30, Justin Hayes wrote:
>>
>> Tried Centos last night, and no difference at all.
>>
>> -------------------------------------------------
>> Justin Hayes
>> OpenBet Support Manager
>> justin.hayes at openbet.com
>>
>> On 6 Sep 2010, at 20:49, Justin Hayes wrote:
>>
>> Hi Ruslan,
>>
>> Sorry looks like I shrunk the image too much. The thing I find odd is that
>> there are others with similar hardware who don't get the problem. It'll be
>> great if 3.10 fixes it for me, but I'd love to get to the bottom of it
>> first. I'm pretty much positive it's not a DB issue, as I've tried different
>> sizes of DB, tried postgres AND mysql etc. I don't think it's apache as I've
>> tried the built in webserver with RT and no change there either.
>>
>> Currently trying to install RT on Centos given that Roy (who has kindly
>> been helping me with details of his own setup) appears to have none of the
>> same problems on that OS. Perhaps perl is just slow on the 64bit ubuntu
>> we've currently got live.
>>
>> No idea if it's going to have any effect though :(
>>
>> Justin
>>
>> -------------------------------------------------
>> Justin Hayes
>> OpenBet Support Manager
>> justin.hayes at openbet.com
>>
>> On 6 Sep 2010, at 18:37, Ruslan Zakirov wrote:
>>
>> Justin.
>>
>> First of all, I can not read from the chart, but anyway history rendering
>> has been worked on in a new code branch. Probably this code will be part of
>> RT 3.10. Code at the moment is unstable, but eventually it wil be faster
>> then the current version.
>>
>> On Mon, Sep 6, 2010 at 8:56 PM, Justin Hayes <justin.hayes at openbet.com>wrote:
>>
>>> So far we've tried installing RT on different hardware, both 32 and 64bit
>>> versions of linux. RT is still very slow for long tickets. All the time is
>>> taken up by the perl/apache process maxing out a core of CPU.
>>>
>>> We've even gone as far as trying to profile the code. We came up with
>>> this graph of where the time was going:
>>>
>>> <TIMING.png>
>>> We then tried to go further into those functions but can't find a single
>>> smoking gun call that is taking all the time.
>>>
>>> For example in a ticket that takes 22s to render approx 5 secs goes on
>>> these 2 lines:
>>>
>>> File: Ticket/Elements/ShowHistory line: 100-103 version 3.8.8
>>>
>>> my @trans_attachments = grep { $_->TransactionId == $Transaction->Id }
>>> @attachments;
>>>
>>> grep { ($_->TransactionId == $Transaction->Id ) &&
>>> ($trans_content->{$_->Id} = $_)  } @attachment_content;
>>>
>>> Both are greps. Does this imply that perl itself is just slow?
>>>
>>> IF so why would our perl be slow compared to other people's? We've tried
>>> compiling it from source and that made no difference.
>>>
>>> ATM we're at a bit of a loss....
>>>
>>> Justin
>>>
>>> -------------------------------------------------
>>> Justin Hayes
>>> OpenBet Support Manager
>>> justin.hayes at openbet.com
>>>
>>> On 1 Jul 2010, at 11:51, Raed El-Hames wrote:
>>>
>>> Justin,
>>>
>>> Do you use Transaction custom fields, if you do n’t ; try and comment out
>>> lines 70,71,72 from html/Ticket/Elements/ShowTransaction
>>> % if ( $Transaction->CustomFieldValues->Count ) {
>>>       <& /Elements/ShowCustomFields, Object => $Transaction &>
>>> % }
>>> See if that improves things for you.
>>> Some of our monitoring tickets can have up to 500 updates, such tickets
>>> use to take up to 20s to load, once I commented out the above lines, load
>>> time is now down to less than 5 seconds.
>>>
>>> Regards;
>>> Roy
>>>
>>>
>>>  *From:* rt-users-bounces at lists.bestpractical.com [mailto:
>>> rt-users-bounces at lists.bestpractical.com] *On Behalf Of *Justin Hayes
>>>
>>> *Sent:* 01 July 2010 11:39
>>> *To:* Kenneth Crocker
>>> *Cc:* rt-users at lists.bestpractical.com
>>> *Subject:* Re: [rt-users] Slow Ticket History 3.8.8
>>>
>>> We do Kenneth, but most tickets don't have many file attachments, so I
>>> assume that's not an issue?
>>>
>>> Cheers,
>>>
>>> Justin
>>>
>>> -------------------------------------------------
>>> Justin Hayes
>>> OpenBet Support Manager
>>> justin.hayes at openbet.com
>>>
>>> On 29 Jun 2010, at 17:54, Kenneth Crocker wrote:
>>>
>>>
>>> Justin,
>>>
>>> I didn't see this mentioned and may have missed it, but are you
>>> displaying attachements inline? That might cut back on the I/O for History.
>>> Just a thought.
>>>
>>> Kenn
>>> LBNL
>>> On Tue, Jun 29, 2010 at 8:04 AM, Justin Hayes <justin.hayes at openbet.com>
>>> wrote:
>>> As a test we've just created a long ticket in an empty RT DB and it's
>>> very fast. So does look to be DB related - contrary to our earlier
>>> investigations.
>>>
>>> I guess it must still access the DB resultset during the ticket rendering
>>> (which isn't how we thought it would work).
>>>
>>> Time to tune the hell out of mysql then.......
>>>
>>>
>>> Justin
>>>
>>> -------------------------------------------------
>>> Justin Hayes
>>> OpenBet Support Manager
>>> justin.hayes at openbet.com
>>> On 29 Jun 2010, at 15:53, Justin Hayes wrote:
>>>
>>> > Seem to be quite a few things to look at Jason. Need to figure out what
>>> they all mean first.
>>> >
>>> > Justin
>>> >
>>> > -------- General Statistics
>>> --------------------------------------------------
>>> > [--] Skipped version check for MySQLTuner script
>>> > [OK] Currently running supported MySQL version 5.1.37-1ubuntu5.4-log
>>> > [OK] Operating on 64-bit architecture
>>> >
>>> > -------- Storage Engine Statistics
>>> -------------------------------------------
>>> > [--] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
>>> > [--] Data in MyISAM tables: 611M (Tables: 8)
>>> > [--] Data in InnoDB tables: 10G (Tables: 20)
>>> > [!!] Total fragmented tables: 21
>>> >
>>> > -------- Performance Metrics
>>> -------------------------------------------------
>>> > [--] Up for: 19d 19h 32m 37s (110M q [64.266 qps], 222K conn, TX: 637B,
>>> RX: 39B)
>>> > [--] Reads / Writes: 98% / 2%
>>> > [--] Total buffers: 602.0M global + 134.8M per thread (150 max threads)
>>> > [!!] Maximum possible memory usage: 20.3G (262% of installed RAM)
>>> > [OK] Slow queries: 0% (229K/110M)
>>> > [!!] Highest connection usage: 100%  (151/150)
>>> > [OK] Key buffer size / total MyISAM indexes: 512.0M/6.7M
>>> > [OK] Key buffer hit rate: 100.0% (84M cached / 7K reads)
>>> > [OK] Query cache efficiency: 71.4% (76M cached / 107M selects)
>>> > [!!] Query cache prunes per day: 661360
>>> > [OK] Sorts requiring temporary tables: 0% (0 temp sorts / 2M sorts)
>>> > [!!] Joins performed without indexes: 112714
>>> > [!!] Temporary tables created on disk: 33% (968K on disk / 2M total)
>>> > [OK] Thread cache hit rate: 99% (1K created / 222K connections)
>>> > [OK] Table cache hit rate: 36% (318 open / 880 opened)
>>> > [OK] Open file limit used: 14% (166/1K)
>>> > [OK] Table locks acquired immediately: 99% (39M immediate / 39M locks)
>>> > [!!] InnoDB data size / buffer pool: 10.1G/8.0M
>>> >
>>> > -------- Recommendations
>>> -----------------------------------------------------
>>> > General recommendations:
>>> >    Run OPTIMIZE TABLE to defragment tables for better performance
>>> >    Reduce your overall MySQL memory footprint for system stability
>>> >    Reduce or eliminate persistent connections to reduce connection
>>> usage
>>> >    Adjust your join queries to always utilize indexes
>>> >    When making adjustments, make tmp_table_size/max_heap_table_size
>>> equal
>>> >    Reduce your SELECT DISTINCT queries without LIMIT clauses
>>> > Variables to adjust:
>>> >  *** MySQL's maximum memory usage is dangerously high ***
>>> >  *** Add RAM before increasing MySQL buffer variables ***
>>> >    max_connections (> 150)
>>> >    wait_timeout (< 28800)
>>> >    interactive_timeout (< 28800)
>>> >    query_cache_size (> 16M)
>>> >    join_buffer_size (> 2.0M, or always use indexes with joins)
>>> >    tmp_table_size (> 128M)
>>> >    max_heap_table_size (> 64M)
>>> >    innodb_buffer_pool_size (>= 10G)
>>> >
>>> >
>>> > -------------------------------------------------
>>> > Justin Hayes
>>> > OpenBet Support Manager
>>> > justin.hayes at openbet.com
>>> >
>>> > On 29 Jun 2010, at 15:22, Jason Doran wrote:
>>> >
>>> >> Hi,
>>> >> If you are using mysqld have a look at "mysqltuner.pl" perl script
>>> (google)
>>> >> This has fixed quickly many performance issues on both RT and other
>>> >> web-based software we use. I run this every few weeks and apply
>>> suggested
>>> >> changes and then simply restart mysqld when things are quite.
>>> >>
>>> >> Regards,
>>> >> Jason Doran
>>> >> Computer Centre
>>> >> NUI, Maynooth
>>> >>
>>> >> On 29 Jun 2010, at 14:09, Justin Hayes wrote:
>>> >>
>>> >>> Hi everyone,
>>> >>>
>>> >>> I've raised this before, but we've had another look at it and still
>>> can't see how to improve things.
>>> >>>
>>> >>> We put a lot of comments/replies in our tickets. Often there can be
>>> 50-100 entries in a ticket, mostly plain text. Loading such a ticket can
>>> take 10-20secs.
>>> >>>
>>> >>> We don't have any slow queries - all the time seems to be in the code
>>> rendering the history of the ticket.
>>> >>> We've had a go at stripping functions out of ShowHistory,
>>> ShowTransaction and ShowTransactionAttachmments but not had much success.
>>> >>>
>>> >>> FWIW our RT runs on quad 3ghz Xeons with 8gb of ram.
>>> >>>
>>> >>> I'd like to try and determine if we're just slow, or if this is just
>>> how long RT takes. Maybe perl is just slow.
>>> >>>
>>> >>> Can anyone shed any light on how long it takes them to render long
>>> tickets in their systems? If you look at the page source it gives you a
>>> value e.g.
>>> >>>
>>> >>> <span>Time to display: 24.996907</span>
>>> >>>
>>> >>> Can anyone share some numbers from theirs for longer tickets? It
>>> would be really appreciated.
>>> >>>
>>> >>>
>>> >>> Thanks,
>>> >>>
>>> >>> Justin
>>> >>>
>>> >>> -------------------------------------------------
>>> >>> Justin Hayes
>>> >>> OpenBet Support Manager
>>> >>> justin.hayes at openbet.com
>>> >>>
>>> >>>
>>> >>> Discover RT's hidden secrets with RT Essentials from O'Reilly Media.
>>> >>> Buy a copy at http://rtbook.bestpractical.com
>>> >>
>>> >
>>> >
>>> > Discover RT's hidden secrets with RT Essentials from O'Reilly Media.
>>> > Buy a copy at http://rtbook.bestpractical.com<http://rtbook.bestpracticalcom/>
>>>
>>>
>>> Discover RT's hidden secrets with RT Essentials from O'Reilly Media.
>>> Buy a copy at http://rtbook.bestpractical.com
>>>
>>>
>>> Discover RT's hidden secrets with RT Essentials from O'Reilly Media.
>>> Buy a copy at http://rtbook.bestpractical.com
>>>
>>>
>>>
>>>
>>>
>>> RT Training in Washington DC, USA on Oct 25 & 26 2010
>>> Last one this year -- Learn how to get the most out of RT!
>>>
>>
>>
>>
>> --
>> Best regards, Ruslan.
>>
>>
>>
>> RT Training in Washington DC, USA on Oct 25 & 26 2010
>> Last one this year -- Learn how to get the most out of RT!
>>
>>
>>
>> RT Training in Washington DC, USA on Oct 25 & 26 2010
>> Last one this year -- Learn how to get the most out of RT!
>>
>>
>>
>>
>> RT Training in Washington DC, USA on Oct 25 & 26 2010
>> Last one this year -- Learn how to get the most out of RT!
>>
>
>
>
> --
> MFG
>
> Torsten Brumm
>
> http://www.brumm.me
> http://www.elektrofeld.de
>
>
>


-- 
MFG

Torsten Brumm

http://www.brumm.me
http://www.elektrofeld.de
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20100907/fe4d2a25/attachment.htm>


More information about the rt-users mailing list