免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zcongwei

急求,mysql 经常导致CPU使用率100%  关闭 [复制链接]

论坛徽章:
0
发表于 2008-07-27 13:57 |显示全部楼层
原帖由 枫影谁用了 于 2008-7-27 13:52 发表
mysql> explain SELECT attach.aid, attach.attachment, t.tid, t.fid, t.subject FROM cdb_attachments attach LEFT JOIN cdb_threads t ON t.tid=attach.tid WHERE attach.readperm='0' AND displayorder>='0 ...



这样啊~~~?
你是说这里面已经没有什么优化的空间了是吧?

论坛徽章:
0
发表于 2008-07-27 14:30 |显示全部楼层
Tasks: 221 total,   8 running, 213 sleeping,   0 stopped,   0 zombie
Cpu(s): 10.6% us,  3.9% sy,  0.0% ni,  0.0% id, 78.5% wa,  7.0% hi,  0.0% si
Mem:    969608k total,   448192k used,   521416k free,      976k buffers
Swap: 11582856k total,   140068k used, 11442788k free,    36688k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
1003 mysql     16   0  463m 142m 2240 D  1.7 15.1   0:01.33 mysqld
1043 mysql     16   0  463m 142m 2240 D  1.7 15.1   0:00.36 mysqld
1081 mysql     16   0  463m 142m 2240 D  1.7 15.1   0:00.39 mysqld
1005 mysql     16   0  463m 142m 2240 D  1.3 15.1   0:01.10 mysqld
1031 mysql     16   0  463m 142m 2240 D  1.3 15.1   0:00.43 mysqld
1047 mysql     17   0  463m 142m 2240 D  1.3 15.1   0:01.07 mysqld
1077 mysql     17   0  463m 142m 2240 R  1.3 15.1   0:00.39 mysqld
  996 mysql     16   0  463m 142m 2240 D  1.0 15.1   0:00.35 mysqld
1018 mysql     17   0  463m 142m 2240 D  1.0 15.1   0:00.47 mysqld
1035 mysql     18   0  463m 142m 2240 D  1.0 15.1   0:00.38 mysqld
1039 mysql     16   0  463m 142m 2240 D  1.0 15.1   0:00.33 mysqld
1049 mysql     16   0  463m 142m 2240 D  1.0 15.1   0:00.80 mysqld
1057 mysql     17   0  463m 142m 2240 R  1.0 15.1   0:00.32 mysqld
1059 mysql     16   0  463m 142m 2240 D  1.0 15.1   0:00.31 mysqld
1062 mysql     16   0  463m 142m 2240 D  1.0 15.1   0:00.45 mysqld
1083 mysql     18   0  463m 142m 2240 R  1.0 15.1   0:00.39 mysqld
1111 nobody    16   0 20572 8976 3212 S  1.0  0.9   0:00.10 httpd
30372 mysql     15   0  463m 142m 2240 D  0.7 15.1   0:14.41 mysqld
32582 mysql     15   0  463m 142m 2240 D  0.7 15.1   0:03.22 mysqld
1015 mysql     17   0  463m 142m 2240 D  0.7 15.1   0:00.33 mysqld
1023 mysql     17   0  463m 142m 2240 R  0.7 15.1   0:00.53 mysqld
1032 mysql     17   0  463m 142m 2240 D  0.7 15.1   0:00.39 mysqld
1033 mysql     17   0  463m 142m 2240 D  0.7 15.1   0:00.35 mysqld
1036 mysql     17   0  463m 142m 2240 R  0.7 15.1   0:00.48 mysqld
1048 mysql     16   0  463m 142m 2240 D  0.7 15.1   0:00.86 mysqld
1053 mysql     17   0  463m 142m 2240 D  0.7 15.1   0:00.36 mysqld
1055 mysql     17   0  463m 142m 2240 D  0.7 15.1   0:00.39 mysqld
1120 nobody    15   0 20868 9412 3232 S  0.7  1.0   0:00.14 httpd
1167 root      17   0  2992 1040  752 R  0.7  0.1   0:00.23 top
3197 root      15   0 79156  980  548 S  0.3  0.1   3:26.63 X
1028 mysql     17   0  463m 142m 2240 R  0.3 15.1   0:00.48 mysqld
1076 mysql     17   0  463m 142m 2240 R  0.3 15.1   0:00.90 mysqld

大家可以看到
wa使用很高的cpu

论坛徽章:
0
发表于 2008-07-27 22:33 |显示全部楼层
负载

论坛徽章:
0
发表于 2008-07-27 23:49 |显示全部楼层
原帖由 nicsky 于 2008-7-27 22:33 发表
负载



你是说负载?

论坛徽章:
0
发表于 2008-07-28 02:11 |显示全部楼层
从我看到的现象来看,机器速度慢主要是CPU在等待IO操作,这样的情况下主机的CPU性能还没有得到发挥就到达了瓶颈.因此个人认为要考虑的不是mysql,而是另外几个问题:
1.磁盘性能是否太低?这可以用复制大文件的方式来检查,如果得到的性能指标达不到你的期望,那就要检查一下硬件是否存在问题,考虑能否做些调整比如使用raid0或更换更快的存储设备;
2.是否有可能减少不必要的IO?这就要分析IO产生的原因:是内存数据的扇入扇出?是mysql读取和写入的操作?如果是前者,就需要考虑调整内存分配比例或者增加内存;如果是后者,就得从mysql的数据分布,表的规模,索引,读写同/异步,以及应用逻辑等各方面来考虑了;
3.如果有条件,把应用的文件系统和mysql的数据库文件系统,甚至mysql中读写比较频繁的表分离到不同的硬盘上去,对性能是肯定有帮助的.

    另:1G的内存为何要配10多G的SWAP?做为server,用swap比内存用得多的时候,性能恐怕已经低得让人忍不住直接重启了;另外内存的free似乎不少,mysql的内存使用率可以调大.

[ 本帖最后由 zhangjoto 于 2008-7-28 02:18 编辑 ]

评分

参与人数 1可用积分 +2 收起 理由
yueliangdao0608 + 2 不错,小奖励一下!

查看全部评分

论坛徽章:
1
白银圣斗士
日期:2015-11-23 08:33:04
发表于 2008-07-28 09:02 |显示全部楼层
原帖由 zhangjoto 于 2008-7-28 02:11 发表
从我看到的现象来看,机器速度慢主要是CPU在等待IO操作,这样的情况下主机的CPU性能还没有得到发挥就到达了瓶颈.因此个人认为要考虑的不是mysql,而是另外几个问题:
1.磁盘性能是否太低?这可以用复制大文件的方式 ...


请教一下从那里看到磁盘的IO问题?

论坛徽章:
0
发表于 2008-07-28 09:56 |显示全部楼层
原帖由 枫影谁用了 于 2008-7-28 09:02 发表


请教一下从那里看到磁盘的IO问题?

vmstat

论坛徽章:
0
发表于 2008-07-28 09:56 |显示全部楼层

回复 #44 zcongwei 的帖子

Top结果的最上面一行

论坛徽章:
1
白银圣斗士
日期:2015-11-23 08:33:04
发表于 2008-07-28 10:18 |显示全部楼层
原帖由 yueliangdao0608 于 2008-7-28 09:56 发表

vmstat


哦,THS。

论坛徽章:
0
发表于 2008-07-28 11:07 |显示全部楼层
原帖由 zhangjoto 于 2008-7-28 02:11 发表
从我看到的现象来看,机器速度慢主要是CPU在等待IO操作,这样的情况下主机的CPU性能还没有得到发挥就到达了瓶颈.因此个人认为要考虑的不是mysql,而是另外几个问题:
1.磁盘性能是否太低?这可以用复制大文件的方式来检查,如果得到的性能指标达不到你的期望,那就要检查一下硬件是否存在问题,考虑能否做些调整比如使用raid0或更换更快的存储设备;
2.是否有可能减少不必要的IO?这就要分析IO产生的原因:是内存数据的扇入扇出?是mysql读取和写入的操作?如果是前者,就需要考虑调整内存分配比例或者增加内存;如果是后者,就得从mysql的数据分布,表的规模,索引,读写同/异步,以及应用逻辑等各方面来考虑了;
3.如果有条件,把应用的文件系统和mysql的数据库文件系统,甚至mysql中读写比较频繁的表分离到不同的硬盘上去,对性能是肯定有帮助的.

    另:1G的内存为何要配10多G的SWAP?做为server,用swap比内存用得多的时候,性能恐怕已经低得让人忍不住直接重启了;另外内存的free似乎不少,mysql的内存使用率可以调大.


谢谢回复

我试了一下,拷贝一个大概300M的数据库目录
在同一个分区间拷贝

发现很慢

同时,发现wa的值也很高

top - 10:57:50 up 5 days, 17:29,  2 users,  load average: 1.16, 0.30, 1.89
Tasks:  68 total,   2 running,  66 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2% us,  3.6% sy,  0.0% ni,  5.1% id, 90.8% wa,  0.2% hi,  0.0% si
Mem:    969608k total,   163392k used,   806216k free,     6284k buffers
Swap: 11582856k total,    25196k used, 11557660k free,   124092k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
1904 root      17   0  2120  272  236 S  2.3  0.0   1:19.90 cpuspeed
    6 root       5 -10     0    0    0 S  0.7  0.0   1:52.85 events/0            196 root      15   0     0    0    0 S  0.7  0.0  24:47.78 kjournald
3197 root      15   0 79156 1208  776 S  0.7  0.1   4:10.32 X                 19860 root      16   0     0    0    0 S  0.3  0.0   0:00.43 pdflush
20868 root      16   0  8176 2304 1828 S  0.3  0.2   0:00.34 sshd              21118 root      18   0  5732  596  512 R  0.3  0.1   0:02.39 cp
    1 root      16   0  3220  272  248 S  0.0  0.0   0:27.93 init                  2 root      RT   0     0    0    0 S  0.0  0.0   0:05.48 migration/0
    3 root      34  19     0    0    0 S  0.0  0.0   0:07.29 ksoftirqd/0           4 root      RT   0     0    0    0 S  0.0  0.0   0:15.71 migration/1
    5 root      34  19     0    0    0 S  0.0  0.0   0:25.89 ksoftirqd/1           7 root       5 -10     0    0    0 S  0.0  0.0   3:40.57 events/1
    8 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 khelper               9 root      15 -10     0    0    0 S  0.0  0.0   0:00.00 kacpid
   41 root       5 -10     0    0    0 S  0.0  0.0   0:28.70 kblockd/0            42 root       5 -10     0    0    0 S  0.0  0.0   0:32.67 kblockd/1


另外怎么去分析平时IO高产生的原因呢? 因为基本上我发现数据库在执行某几个查询的时候IO值就很高


另外关于读写文件,我的mysql数据库表是放在/usr/local/mysql/var目录下了
如果再重新分一个区用来存这些数据库
会不会好点?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP