IO Disk Rate Notification + Optimization Request

Hi, I'm running Apache2 + Mysql5 on a Lebian install under a 360 slice.

The purpose of this install is to run a vBulletin forum with the following stats:

Threads: 23,832, Posts: 484,059, Members: 7,430

About 50 members active at a time.

I have not moved my forum over yet and I'm just playing around with a test installation of vB4.

Anyway, I ran into a Disk IO notification and I'm wondering how I can look into that further and try to optimize against it? The only thing I can think of that triggered it is when I imported my DB into Mysql5 and also copied the forum software into the server. Would that trigger it?

The other thing that was odd is this morning the server was responding really slow. I booted up top and sorted by memory usage and Mysql5 was using 60% memory! What? I'm assuming this spike happened because of the import but why didn't it ever go down?

I rebooted Mysql5 and everything returned back to normal. However that type of behavior just scared me once the forum is in place, what will Mysql do in that case? I'm only running things with barely one user active right now!

If anyone could help optimize / let me know what to do I'd really appreciate it!

5 Replies

The IO notification is just that, a notification. It's not a warning. It doesn't mean you need to lower your IO load.

As for RAM, which of the my.cnf files are you using? If you selected one that's oversized for your available RAM, it could cause issues.

It's whatever the default is, let me post it:

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# 
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/se...variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port     = 3306
socket     = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket     = /var/run/mysqld/mysqld.sock
nice     = 0

[mysqld]
#
# * Basic Settings
#
user     = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket     = /var/run/mysqld/mysqld.sock
port     = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir     = /tmp
language    = /usr/share/mysql/english
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address     = 127.0.0.1
#
# * Fine Tuning
#
key_buffer     = 16M
max_allowed_packet    = 16M
thread_stack     = 128K
thread_cache_size    = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover     = BACKUP
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 1M
query_cache_size = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
#log     = /var/log/mysql/mysql.log
#
# Error logging goes to syslog. This is a Debian improvement 
#
# Here you can see queries with especially long duration
#log_slow_queries    = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id     = 1
#log_bin     = /var/log/mysql/mysql-bin.log
expire_logs_days    = 10
max_binlog_size = 100M
#binlog_do_db     = include_database_name
#binlog_ignore_db    = include_database_name
#
# * BerkeleyDB
#
# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
skip-bdb
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
# You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
skip-innodb
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem

[mysqldump]
quick
quote-names
max_allowed_packet    = 16M

[mysql]
#no-auto-rehash    # faster start of mysql but no tab completition

[isamchk]
key_buffer     = 16M

#
# * NDB Cluster
#
# See /usr/share/doc/mysql-server-*/README.Debian for more information.
#
# The following configuration is read by the NDB Data Nodes (ndbd processes)
# not from the NDB Management Nodes (ndb_mgmd processes).
#
# [MYSQL_CLUSTER]
# ndb-connectstring=127.0.0.1

#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

Have a look at the minimalistic configuration by caker: http://www.linode.com/~caker/uml/my.cnf

And that type of configuration is okay with the density that I am running?

It's a starting point. You'll have to ultimately make that call based on observed system performance statistics and trending gathered, and adjust further if it does not meet your needs.

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct