这样的iowait算高吗

513 views
Skip to first unread message

Dongkuo Ma

unread,
Aug 5, 2011, 8:01:30 AM8/5/11
to sh...@googlegroups.com
公司有台数据库服务器,偶尔会在一个时间点上出现10-20个的slow query,一般耗时10-20s,都是insert和update

iostat的输出结果,%iowait在10%-30%之间,大部分集中在20%-25%,%user在0.8%-3%之间,大部分集中在1%左右

%util一般都是100%

这个数据,是不是表明服务器的磁盘压力过大,请大家指点下

Shell Xu

unread,
Aug 5, 2011, 9:15:54 AM8/5/11
to sh...@googlegroups.com
你的标题和最后问题不是一回事。
只要你的服务器CPU没有达到峰值,iowait就不应当被过多考虑,除非你的很多请求被阻塞在了io上面,导致请求响应速度过慢。
磁盘压力的问题,是另一套方法衡量的。磁盘有两个指标,顺序读写性能和随机读写响应数。前者是读写性能,后者则取决于转速/寻道系统等等。组建和服务器一样的测试机,用iozone压,分别使iops和read/write达到峰值。用iostat看磁盘iops和read/write速度,只要你服务器上的iops和read/write没有接近峰值,磁盘压力就不算满。
在同等的iops和read/write下,你的iowait还取决于文件系统类型。正好这个月要讲文件系统,你可以听听。

另外,如果出现slow query,而且长达数十秒,主要应该考虑的问题是锁。例如oracle使用事务后,在修改行的时候会出现行级锁。如果另一个会话也操作同一行,那么会阻塞直到第一个会话提交或者回滚。
--
无能者无所求,饱食而遨游,泛若不系之舟
blog: http://shell909090.com/blog/
twitter: http://twitter.com/shell909090

Dongkuo Ma

unread,
Aug 5, 2011, 9:54:47 AM8/5/11
to sh...@googlegroups.com
数据库是MySQL,MYISAM引擎,不会有事务的长锁,而且并发不会超过10个,出现超过10s的语句有点摸不清头绪

我在烟台,上海的线下活动都参加不了~

2011/8/5 Shell Xu <shell...@gmail.com>

Xi Shen

unread,
Aug 6, 2011, 3:41:19 AM8/6/11
to sh...@googlegroups.com
你insert的目标表有多少记录?index是怎么定义的?如果表的记录非常多,非线性增长的cluster index会影响io性能。


2011/8/5 Dongkuo Ma <luc...@gmail.com>:

--
Regards,
David Shen

Druggo

unread,
Aug 6, 2011, 2:06:34 PM8/6/11
to Shanghai Linux User Group
%util已达100%说明磁盘饱和了,赶紧想办法吧。

Dongkuo Ma

unread,
Aug 10, 2011, 12:59:54 AM8/10/11
to sh...@googlegroups.com
恩,这几天降下更新的频率之后,就没有再出这样的slow query了

2011/8/7 Druggo <dru...@gmail.com>
Reply all
Reply to author
Forward
0 new messages