Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a Linux server that I use to run the DB of my application (MySql), the server have 8GB Ram and 4 cores. there are no other applications running on the server besides the MySql.

Most of the time the server disk I/O utilization is about 90-100%.

Here is some extra info:

Uptime: 2387312  Threads: 29  Questions: 344977869  Slow queries: 3380301  Opens: 200483225  Flush tables: 1  Open tables: 9  Queries per second avg: 144.504

the DB size is about 70GB, and if i had to define the queries type I would say 60% are plain queries and the rest are more complex (join few tables etc.)

I'm using New Relic go get the I/O utilization, according to Linode (where the server is hosted), the average I/O on the server is: IO rate of 10780 blocks per sec

is this normal?

share|improve this question
Could be normal. Or then not. Please read your question and think about it one more time; if you would be the one answering, how on earth one could reply to you? You don't tell us anything useful; how big the databases are? How many queries/sec your server gets? What kind of queries they are - simple SELECTs or more complex queries with joins, unions...? Has the server always been like that or just recently started to perform lots of I/O? Be much more specific unless you want me to pick a random answer card. – Janne Pikkarainen Nov 11 '11 at 8:38
If it's really 100% it can't be normal. Which tool you use to monitor ? How it measures those percents ? – Sandman4 Nov 11 '11 at 8:40
added more info, hope the question is more focused now :) – Ran Nov 11 '11 at 9:00
up vote 3 down vote accepted

The number of "slow queries" is a bit high. The disk load seems to indicate full table scans as well. My feeling is that your database is missing some indices on frequently used queries. Look closer at the queries - are they selection values from indexed tables?

share|improve this answer

A pure guess: perhaps your server is generating lots of temporary tables to disk? Does SHOW GLOBAL STATUS LIKE '%tmp%'; return lots of disk tables created when compared to tmp tables?

If so, analyze the queries and/or consider raising tmp_table_size value if your server has room to breath memory-wise.

share|improve this answer
Created_tmp_disk_tables = 61435, Created_tmp_tables = 5704248, is this a lot? – Ran Nov 11 '11 at 9:16
Not really, unless those have been created just recently and suddenly. :-) Around 1% of your queries lead to disk based temp tables. – Janne Pikkarainen Nov 11 '11 at 9:19
BTW, my current tmp_table_size is 16777216 – Ran Nov 11 '11 at 9:36

Most of the time the server disk I/O utilization is about 90-100%

Then your server is I/O-bound.

The usual solution is to add more disk I/O capacity (=spindles).

share|improve this answer
...or to improve the queries to reduce disk I/O. Sounds to me like a lot of full table scans. I say Indexes first, Spindles second. – ryandenki Dec 27 '11 at 1:08

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.