Thanks for your input. I'll try give my.cnf a try.
I'm not technical at all and am unable to describe the queries myself.
Attached some output from the server (Sorry for the long post):
SHOW STATUS
---------------------
+--------------------------+------------+
| Variable_name | Value |
+--------------------------+------------+
| Aborted_clients | 106 |
| Aborted_connects | 1 |
| Bytes_received | 1386152010 |
| Bytes_sent | 1017147314 |
| Com_alter_table | 0 |
| Com_analyze | 0 |
| Com_backup_table | 0 |
| Com_change_db | 404084 |
| Com_delete | 954139 |
| Com_flush | 0 |
| Com_insert | 38972 |
| Com_insert_select | 0 |
| Com_kill | 0 |
| Com_load | 0 |
| Com_select | 5274720 |
| Com_set_option | 0 |
| Com_show_binlog_events | 0 |
| Com_show_binlogs | 0 |
| Com_show_create | 0 |
| Com_show_databases | 4 |
| Com_show_fields | 2 |
| Com_show_grants | 0 |
| Com_show_keys | 0 |
| Com_show_logs | 0 |
| Com_show_master_status | 0 |
| Com_show_new_master | 0 |
| Com_show_open_tables | 0 |
| Com_show_processlist | 8 |
| Com_show_slave_hosts | 0 |
| Com_show_slave_status | 0 |
| Com_show_status | 9 |
| Com_show_innodb_status | 0 |
| Com_show_tables | 56 |
| Com_show_variables | 20 |
| Com_slave_start | 0 |
| Com_slave_stop | 0 |
| Com_truncate | 0 |
| Com_unlock_tables | 0 |
| Com_update | 1412924 |
| Connections | 403875 |
| Created_tmp_disk_tables | 688 |
| Created_tmp_tables | 105261 |
| Created_tmp_files | 0 |
| Delayed_insert_threads | 0 |
| Delayed_writes | 0 |
| Delayed_errors | 0 |
| Flush_commands | 1 |
| Handler_commit | 0 |
| Handler_delete | 27226 |
| Handler_read_first | 611592 |
| Handler_read_key | 2133888023 |
| Handler_read_next | 2198593130 |
| Handler_read_prev | 278 |
| Handler_read_rnd | 34278228 |
| Handler_read_rnd_next | 249766468 |
| Handler_rollback | 0 |
| Handler_update | 1007151 |
| Handler_write | 184271195 |
| Key_blocks_used | 106432 |
| Key_read_requests | 3936331483 |
| Key_reads | 100865 |
| Key_write_requests | 1897202 |
| Key_writes | 1444468 |
| Max_used_connections | 234 |
| Not_flushed_key_blocks | 0 |
| Not_flushed_delayed_rows | 0 |
| Open_tables | 1024 |
| Open_files | 1055 |
| Open_streams | 0 |
| Opened_tables | 6601 |
| Questions | 17691302 |
| Qcache_queries_in_cache | 1564 |
| Qcache_inserts | 5109816 |
| Qcache_hits | 9173397 |
| Qcache_lowmem_prunes | 89550 |
| Qcache_not_cached | 183073 |
| Qcache_free_memory | 4490312 |
| Qcache_free_blocks | 1239 |
| Qcache_total_blocks | 4393 |
| Rpl_status | NULL |
| Select_full_join | 712 |
| Select_full_range_join | 119 |
| Select_range | 24655 |
| Select_range_check | 0 |
| Select_scan | 407032 |
| Slave_open_temp_tables | 0 |
| Slave_running | OFF |
| Slow_launch_threads | 0 |
| Slow_queries | 2892 |
| Sort_merge_passes | 0 |
| Sort_range | 244321 |
| Sort_rows | 2279797622 |
| Sort_scan | 151217 |
| Table_locks_immediate | 7551643 |
| Table_locks_waited | 957623 |
| Threads_cached | 220 |
| Threads_created | 235 |
| Threads_connected | 15 |
| Threads_running | 7 |
| Uptime | 155131 |
+--------------------------+------------+
132 rows in set (0.00 sec)
Snapshot of MYTOP
--------------------------
MySQL on localhost (4.0.14-Max)
up 1+19:18:02 [12:20:47]
Queries: 17.0M qps: 114 Slow: 31.0 Se/In/Up/De(%):
00/00/00/00
qps now: 87 Slow qps: 3.2 Threads: 129 ( 119/ 106)
75/01/09/07
Cache Hits: 7.9k Hits/s: 0.1 Hits now: 43.7 Ratio: 61.0% Ratio now:
66.7%
Key Efficiency: 100.0% Bps in/out: 8.4/ 60.1 Now in/out: 6.5k/54.1k
Id User Host/IP DB Time Cmd Query or
State
-- ---- ------- -- ---- --- ----------
408302 root localhost baby_kingd 0 Query show full
processlist
408582 xoops 192.168.0.1 baby_kingd 0 Sleep
408636 xoops 192.168.0.1 baby_kingd 0 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408627 xoops 192.168.0.1 baby_kingd 1 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408635 xoops 192.168.0.1 baby_kingd 1 Query SELECT u.uid,
u.uname FROM xoops_users u, xoops_bb_forum_mods
408637 xoops 192.168.0.1 baby_kingd 1 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408638 xoops 192.168.0.1 baby_kingd 1 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408639 xoops 192.168.0.1 baby_kingd 1 Query SELECT * FROM
xoops_users WHERE uid=3867
408641 xoops 192.168.0.1 baby_kingd 1 Query SELECT u.uid,
u.uname FROM xoops_users u, xoops_bb_forum_mods
408631 xoops 192.168.0.1 baby_kingd 2 Query SELECT * FROM
xoops_users WHERE uid=6104
408632 xoops 192.168.0.1 baby_kingd 2 Query SELECT * FROM
xoops_users WHERE uid=555
408634 xoops 192.168.0.1 baby_kingd 2 Query SELECT * FROM
xoops_users WHERE uid=15313
408553 xoops 192.168.0.1 baby_kingd 3 Query INSERT INTO
xoops_bb_posts_text (post_id, post_text) VALUES (1
408629 xoops 192.168.0.1 baby_kingd 3 Query SELECT * FROM
xoops_users WHERE uid=393
408630 xoops 192.168.0.1 baby_kingd 3 Query SELECT t.*,
u.uname, u2.uname as last_poster, p.post_time as l
408625 xoops 192.168.0.1 baby_kingd 4 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408626 xoops 192.168.0.1 baby_kingd 4 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408628 xoops 192.168.0.1 baby_kingd 4 Query SELECT * FROM
xoops_users WHERE uid=645
408620 xoops 192.168.0.1 baby_kingd 5 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408621 xoops 192.168.0.1 baby_kingd 5 Query SELECT * FROM
xoops_users WHERE uid=12308
408624 xoops 192.168.0.1 baby_kingd 5 Query SELECT * FROM
xoops_users WHERE uid=12013
408615 xoops 192.168.0.1 baby_kingd 6 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408616 xoops 192.168.0.1 baby_kingd 6 Query SELECT t.*,
u.uname, u2.uname as last_poster, p.post_time as l
408617 xoops 192.168.0.1 baby_kingd 6 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408618 xoops 192.168.0.1 baby_kingd 6 Query SELECT u.uid,
u.uname FROM xoops_users u, xoops_bb_forum_mods
408619 xoops 192.168.0.1 baby_kingd 6 Query SELECT * FROM
xoops_users WHERE uid=4896
408597 xoops 192.168.0.1 baby_kingd 7 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408611 xoops 192.168.0.1 baby_kingd 7 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408614 xoops 192.168.0.1 baby_kingd 7 Query SELECT * FROM
xoops_users WHERE uid=81
408509 xoops 192.168.0.1 baby_kingd 8 Query INSERT INTO
xoops_bb_posts_text (post_id, post_text) VALUES (1
408601 xoops 192.168.0.1 baby_kingd 8 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408609 xoops 192.168.0.1 baby_kingd 8 Query SELECT * FROM
xoops_users WHERE uid=5876
408610 xoops 192.168.0.1 baby_kingd 8 Query SELECT * FROM
xoops_users WHERE uid=382
408526 xoops 192.168.0.1 baby_kingd 9 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408572 xoops 192.168.0.1 baby_kingd 9 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408585 xoops 192.168.0.1 baby_kingd 9 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408606 xoops 192.168.0.1 baby_kingd 9 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408607 xoops 192.168.0.1 baby_kingd 9 Query SELECT * FROM
xoops_users WHERE uid=367
408608 xoops 192.168.0.1 baby_kingd 9 Query SELECT * FROM
xoops_users WHERE uid=2388
408470 xoops 192.168.0.1 baby_kingd 10 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408491 xoops 192.168.0.1 baby_kingd 10 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408510 xoops 192.168.0.1 baby_kingd 10 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408517 xoops 192.168.0.1 baby_kingd 10 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408519 xoops 192.168.0.1 baby_kingd 10 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408581 xoops 192.168.0.1 baby_kingd 10 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408604 xoops 192.168.0.1 baby_kingd 10 Query SELECT uname
FROM xoops_users WHERE uid = 793
408605 xoops 192.168.0.1 baby_kingd 10 Query SELECT * FROM
xoops_users WHERE uid=3089
408490 xoops 192.168.0.1 baby_kingd 11 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408492 xoops 192.168.0.1 baby_kingd 11 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408497 xoops 192.168.0.1 baby_kingd 11 Query SELECT p.*,
t.post_text FROM xoops_bb_posts p, xoops_bb_posts_
408592 xoops 192.168.0.1 baby_kingd 11 Query SELECT t.*,
u.uname, u2.uname as last_poster, p.post_time as l
408599 xoops 192.168.0.1 baby_kingd 11 Query SELECT t.*,
u.uname, u2.uname as last_poster, p.post_time as l
408600 xoops 192.168.0.1 baby_kingd 11 Query SELECT t.*,
u.uname, u2.uname as last_poster, p.post_time as l
408602 xoops 192.168.0.1 baby_kingd 11 Query SELECT * FROM
xoops_users WHERE uid=3819
TOP
------
12:10:01 up 2 days, 8:52, 1 user, load average: 4.15, 6.79, 7.02
40 processes: 38 sleeping, 2 running, 0 zombie, 0 stopped
CPU0 states: 67.2% user 25.4% system 0.0% nice 0.0% iowait 6.4%
idle
CPU1 states: 10.0% user 7.3% system 0.0% nice 0.0% iowait 82.2%
idle
Mem: 2064500k av, 1130168k used, 934332k free, 0k shrd, 62876k
buff
933640k actv, 49892k in_d, 26704k in_c
Swap: 2040244k av, 36k used, 2040208k free 684320k
cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
3138 mysql 15 0 264M 264M 2232 S 99.9 13.0 1792m 0 mysqld-max
SAR
------
07:00:00 HK all 0.66 0.00 0.47 98.87
07:10:00 HK all 5.04 0.00 1.89 93.06
07:20:00 HK all 4.85 0.00 2.23 92.92
07:30:00 HK all 2.25 0.00 1.15 96.60
07:40:00 HK all 2.88 0.00 1.34 95.78
07:50:00 HK all 2.00 0.00 1.12 96.88
08:00:00 HK all 4.09 0.00 1.86 94.05
08:10:00 HK all 4.90 0.00 2.38 92.72
08:20:00 HK all 3.40 0.00 1.73 94.88
08:30:00 HK all 2.65 0.00 1.42 95.92
08:40:00 HK all 4.25 0.00 1.98 93.77
08:50:00 HK all 5.92 0.00 2.74 91.34
09:00:00 HK all 7.57 0.00 3.36 89.07
09:10:00 HK all 12.44 0.00 5.50 82.06
09:20:00 HK all 32.86 0.00 14.31 52.84
09:30:00 HK all 24.03 0.00 9.57 66.40
09:40:00 HK all 31.26 0.00 13.83 54.91
09:50:00 HK all 43.56 0.00 21.61 34.83
10:00:03 HK all 42.48 0.00 19.74 37.78
10:10:00 HK all 38.89 0.00 19.31 41.80
10:10:00 HK CPU %user %nice %system %idle
10:20:00 HK all 42.50 0.00 20.21 37.29
10:30:00 HK all 35.91 0.00 16.64 47.45
10:40:00 HK all 46.26 0.00 22.03 31.72
10:50:00 HK all 43.28 0.00 19.37 37.35
11:00:00 HK all 35.22 0.00 16.42 48.36
11:10:00 HK all 33.16 0.00 15.55 51.29
11:20:00 HK all 36.43 0.00 16.64 46.93
11:30:00 HK all 35.75 0.00 16.84 47.41
11:40:00 HK all 39.29 0.00 18.52 42.20
11:50:00 HK all 38.25 0.00 19.21 42.54
12:00:01 HK all 57.51 0.00 28.40 14.09
12:10:00 HK all 50.69 0.00 26.55 22.76
Average: all 15.37 0.00 7.33 77.30
----- Original Message -----
From: "David Griffiths" <[EMAIL PROTECTED]>
To: "Rainer Sip" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Wednesday, October 22, 2003 3:11 AM
Subject: Re: Mysql Performance Question
> You need to figure out what's slowing down your application. It could be
> expensive queries which in turn could be caused by missing indexes. It
could
> be that the machine is too slow or the configuration of MySQL is
> sub-optimal.
>
> In this case, the machine looks fine.
>
> I can't comment on queries or indexes.
>
> Your tuning, I can.
>
> set-variable = key_buffer=512M
>
> This one is important; it caches data from the database in memory. How big
> is your database? Is it bigger than 512 meg? If so, is there free memory
on
> the machine? If so, I'd recommend bumping it up as much as you can; it's
> faster to get data from memory than it is from disk.
>
>
> set-variable = sort_buffer=16M
>
> This is used to sort the results of queries; it's per-connection. I
believe
> it is allocated on an as-needed basis. Regardless, are you doing a lot of
> ORDER BY/GROUP BY in your queries? This might be a little high.
>
>
> set-variable = table_cache=1024
>
> How many tables do you have? This tells the database how many tables to
keep
> open. It probably won't make much of a difference lowering it.
>
>
> set-variable = join_buffer=8M
>
> This one is used to join tables where no indexes exist. In otherwords, if
> you're using indexes, it won't be used.
>
>
> set-variable = record_buffer=8M
>
> This is used for reading in rows after a sort (from the sort_buffer).
Again,
> per client. Do you need it?
>
>
> set-variable = query_cache_size=6M
>
> This one can be a waste of memory, or a huge bonus. Queries and their
result
> sets are stored here. If you need to run the same query a second time, the
> database just pulls the results from the cache.
>
> There are a few issues, tho.
>
> If you have a query,
>
> "SELECT * FROM table_1 WHERE condition_1 = 12"
>
> then the result of the query will be stored. But if the next statement is,
> "UPDATE TABLE table_1..." then the data in the cache relating to table_1
> have to be unloaded, as the UPDATE statement could have invalidated all of
> it.
>
> But, if you have some stock queries that constantly read data from tables
> that, in the business logic of your application, are read-only (ie you
> rarely, if ever, update the data in them), then the query cache can be a
big
> bonus.
>
> Another interesting note is the query_cache_type variable. You can set it
to
> 2 in the my.cnf file; this means that in your select statements, you add a
> hint to tell the database to cache or not cache the results of the query.
So
> if you know a query and it's results are very dynamic, then it's not much
> use to use the query cache and you can tell the database to not put it in
> the query cache. The SELECT statement would look like, 'SELECT SQL_CACHE *
> FROM table_1 WHERE...'. Here's the page:
> http://www.mysql.com/doc/en/Query_Cache.html
>
>
>
> Next, moving to InnoDB. I found that, properly tuned, InnoDB is almost as
> fast as MyISAM. You'll want to set the innodb_buffer_pool_size as large as
> possible (it's the MyISAM key_buffer) to cache as much data.
>
> You'll need to set up a tablespace; you can put them all over your disks.
> Finally, play with innodb_flush_method. I set it to O_DSYNC and got a
> substantial increase in performance. Search the MySQL list-archives for
> discussions on the options, or check out http://www.innodb.com
>
>
> Hope that helps,
> David
>
>
>
> ----- Original Message -----
> From: "Rainer Sip" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Tuesday, October 21, 2003 9:48 AM
> Subject: Mysql Performance Question
>
>
> I'm running a community site (Xoops) on Mysql 4.0.14.
>
> I found that the speed of my site is slow during peak hours, when there
> are 450 concurrent uers hanging on the site. Mytop showed that the
> queries per second maxed at 500. I believe this could be higher,
> provided that I have it running on a dedicated machine. I also noticed
> the load average is very high (12+ during peak hours)
>
> In the mid run I'm planning to mirgrate to innodb for higher concurrency
> (I'm currently using myisam). However, I'm seeking suggestions in fine
> tuning the parameters.
>
> The machine is a Dell PowerEdge 4400 with 2 Xeon 1G processors and 2GB
> of memory. There are 4 disks running raid 0+1. Attached the my.cnf for
> your easy review. Thanks a lot in advance.
>
> Cheers,
> Rainer
>
>
> [client]
> socket=/var/lib/mysql/mysql.sock
>
> [client]
> socket=/var/lib/mysql/mysql.sock
>
> [mysqld]
> datadir=/var/lib/mysql
> socket=/var/lib/mysql/mysql.sock
> skip-locking
> set-variable = key_buffer=512M
> set-variable = max_allowed_packet=1M
> set-variable = table_cache=1024
> set-variable = sort_buffer=16M
> set-variable = join_buffer=8M
> set-variable = record_buffer=8M
> set-variable = thread_cache=512
> set-variable = max_connections=500
> set-variable = tmp_table_size=128M
> set-variable = thread_concurrency=4
> set-variable = myisam_sort_buffer_size=512M
> set-variable = query_cache_size=6M
> #set-variable = max_connect_errors=1000
> #set-variable = back_log=100
> #log-bin
> skip-innodb
>
> [mysql.server]
> user=mysql
> basedir=/var/lib
>
> [safe_mysqld]
> err-log=/var/log/mysqld.log
> pid-file=/var/run/mysqld/mysqld.pid
>
> [mysqldump]
> quick
> set-variable = max_allowed_packet=16M
>
> [mysql]
> no-auto-rehash
> # Remove the next comment character if you are not familiar with SQL
> #safe-updates
>
> [isamchk]
> set-variable = key_buffer=256M
> set-variable = sort_buffer=124M
> set-variable = read_buffer=2M
> set-variable = write_buffer=2M
>
> [myisamchk]
> set-variable = key_buffer=256M
> set-variable = sort_buffer=256M
> set-variable = read_buffer=8M
> set-variable = write_buffer=4M
>
> [mysqlhotcopy]
> interactive-timeout
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]
>
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]