现在的位置: 首页 > IT运维 > 正文

Mysql Tuning tools

2010年07月20日 IT运维 ⁄ 共 1547字 暂无评论 ⁄ 被围观 0+

Mysql Tuning tools

1. 配置mysql log_slow_queries 功能

输出那些耗时的sql语句到日志中,使用mysqldumpslow去统计,从而确定是哪些应用的数据库查询影响了数据库性能。

log_slow_queries在 my.cnf的配置,示例如下:
log_slow_queries
long_query_time = 2
log_long_format

mysqldumpslow 的使用,到日志所在目录,执行:

# mysqldumpslow ./www-slow.log

2. 利用mytop实时查看 mysql的负载情况

mytop的最新版本为1.6,mytop-1.6.tar.gz的安装需要以下软件包支持:

DBI-1.58.tar.gz
TermReadKey-2.30.tar.gz
DBD-mysql-4.005 

此软件安装比较简单,可以参照readme即可。

一下是安装中常会出现的问题:

如果运行mytop时出现以下错误:

  1. mysql.so: undefined symbol: DBIc_TRACE_LEVEL

    基本上确定是DBI及DBD-mysql的版本不匹配造成的,详见:http://www.cpanforum.com/posts/5528

  2. Segmentation fault

    基本上确定是由于TermReadKey版本和mytop要求不匹配造成的,详见:http://www.webhostingtalk.com/archive/index.php/t-429329.html

在找到有问题的sql语句後,对my.cnf也做了相应的处理,主要是参考my-huge.cnf,内容如下,欢迎对此配置进行讨论:

# cat my.cnf
[client]
port            = 3306
socket          = /tmp/mysql.sock
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
key_buffer = 384M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 4M
read_buffer_size = 4M
net_buffer_length = 64K
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
max_connections = 1500
max_connect_errors = 1500
query_cache_size = 64M
thread_cache_size = 8
thread_concurrency = 8

#log_slow_queries
#long_query_time = 5
#log_long_format
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout

经过测试发现key_buffer及query_cache_size 对mysql性能影响较大。

另外,发现mysq在linux下高负载运行时,kswapd会经常出来捣乱,致使情况变得更糟。系统load average会急剧升高,直至mysql没有任何响应。
对此感兴趣的可以搜索 mysql+kswapd

给我留言

您必须 [ 登录 ] 才能发表留言!

×
#