In short, tips/hints on creating and maintaining a system optimized solely for 
RT?

In more detail, Gateway E4100 desktop with Pentium4/2.8GHz w/Hyperthreading 
enabled, 4x256MB DDR-266, 80GB drive.  OpenBSD 4.4-Stable, with BSD.MP Generic 
kernel.  RT-3.8.2, MySQL-5.0.67, Apache-2.2.11, Mod_Perl-2.0.4.  Most "fixdeps" 
are all current, except for whatever may have already been a part of the base 
OpenBSD 4.4-Stable install.  I don't know how to get the specific version of 
all the various Perl modules, if anybody can tell me, I'll be happy to get that 
too.  Also Mod_auth_cas-1.0.8, and OpenSSL-0.98i (things I had to also build to 
get my setup working.)  Normal built-in sendmail, with procmail 3.22.  I 
couldn't get MySQL-5.1.30 to pass the "make test" and I could not get 
OpenSSL-0.98j to create the "fips" stuff.

I figured HT-enabled would be good, since I'm told most database queries can be 
threaded, and it's mostly integer-based so there's no competing for the sole FP 
unit on the CPU itself.  I disabled HT, rebooted with just BSD and I didn't 
notice any significant changes, so I'm chancing keeping it enabled with BSD.MP.

I've not specifically tuned mod_perl (nor anything else yet.)

./mysqltuner.pl --nocolor --forcemem 1000 -forceswap 1500 --noinfo --nogood says
-------- General Statistics --------------------------------------------------
-------- Storage Engine Statistics -------------------------------------------
-Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[!!] Total fragmented tables: 1
-------- Performance Metrics -------------------------------------------------
[!!] Maximum possible memory usage: 1.2G (120% of installed RAM)
[!!] Key buffer hit rate: 92.9% (14K cached / 1K reads)
[!!] Temporary tables created on disk: 29% (1K on disk / 6K total)
-------- Recommendations -----------------------------------------------------
General recommendations:
    Run OPTIMIZE TABLE to defragment tables for better performance
    Reduce your overall MySQL memory footprint for system stability
    Enable the slow query log to troubleshoot bad queries
    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 ***
    tmp_table_size (> 32M)
    max_heap_table_size (> 16M)

Checking MySQL for
        mysql> show variables like 'tmp_table_size';
        | tmp_table_size | 33554432 |
        mysql> show variables like 'max_heap_table_size';
        | max_heap_table_size | 16777216 |

I can't add RAM the box is full.  I figure 4x256MB of slow RAM is better than 
2x256MB of DDR400 (1GB slow is better than 512MB of faster RAM.)

I'm not sure if it's telling me to set tmp_table_size and max_heap_table_size 
both to less than 16M.  Since it says they should be the same, and the heap is 
being flagged as being >16M, I was thinking of setting them both to 12M.

The /etc/my.cnf is mostly, along w/stuff about password and whatnot that I 
don't think matter for this particular thread.  Mostly pulled from 
"my-large.cnf" example, disabling federated and bdb, and enabling innodb by 
uncommenting the lines.

[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 2

innodb_data_home_dir = /opt/mysql/var/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /opt/mysql/var/
innodb_log_arch_dir = /opt/mysql/var/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash


I've not done the OPTIMIZE yet.  Is that cron-able for once per 
month/quarter/year, and does anyone have suggestion on frequency?

The RT setup is new and the database is empty.  I'm perfectly happy clearing it 
out, starting it over, enabling/disabling/configuring things specifically for 
RT's sole use.  MySQL talks via Unix sockets rather than TCP.

We expect less than a dozen support staff to use it daily, although the number 
of incoming email request ticket creation ebbs and flows.  Only the support 
staff have access to the web interface, requestors mostly prefer all email 
around here for correspondence.  Incoming email is passed from 
sendmail/spamassasin, then procmail (which drops everything SpamAssassin score 
> 12), and then passes it to rt-mailgate.

I'm not sure if perceived "slowness" is due to webserver or MySQL or something 
else.  And partly, it's just me trying to start with a clean, fast, optimized 
system, since I have the chance to do so.  Not necessarily, a "it IS slow, and 
thus I must fix something."  And yah, the hardware is the hardware (especially 
w/only 1GB RAM) but alas, nothing I can do on that part (sigh.)  I'm scrabbling 
through my "junk box" for bigger sticks of memory :)

So any tips, hints, suggestions, comments, criticisms, etc - all welcome.  It's 
a brand-new install, so I figure now's the time to make any changes (or start 
over!) as needed :)

Thank you,
PH

_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Community help: http://wiki.bestpractical.com
Commercial support: [email protected]


Discover RT's hidden secrets with RT Essentials from O'Reilly Media. 
Buy a copy at http://rtbook.bestpractical.com

Reply via email to