linux – 高IO等待 – 如何确定根本原因?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 高IO等待 – 如何确定根本原因?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2923字,纯文字阅读大概需要5分钟。
内容图文
![linux – 高IO等待 – 如何确定根本原因?](/upload/InfoBanner/zyjiaocheng/959/f8473ae77f9f4d5389d9db178a5511d3.jpg)
我在两个专用服务器上有一个MySQL实例.一个用于生产,另一个用于测试平台.
两台服务器完全相同,唯一的区别是RAID控制器和虚拟卷(HD是相同的).在制作时,有一个专用的硬件RAID控制器和一个RAID 10卷.另一方面,RAID控制器似乎是软件(Lenovo ThinkServer RAID 110i),卷为RAID 5.
我们注意到在MySQL提交期间,我们有很高的iowait:
while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done
root 26661 0.0 0.0 0 0 ? D Jun09 5:41 \_ [jbd2/dm-14-8]
root 26691 0.0 0.0 0 0 ? D Jun09 0:57 \_ [jbd2/dm-10-8]
Thu Jun 18 13:49:37 CEST 2015
root 26691 0.0 0.0 0 0 ? D Jun09 0:57 \_ [jbd2/dm-10-8]
Thu Jun 18 13:49:38 CEST 2015
root 1474 0.0 0.0 0 0 ? D Jun04 0:23 \_ [jbd2/dm-5-8]
root 26691 0.0 0.0 0 0 ? D Jun09 0:57 \_ [jbd2/dm-10-8]
Thu Jun 18 13:49:39 CEST 2015
Thu Jun 18 13:49:40 CEST 2015
root 1474 0.0 0.0 0 0 ? D Jun04 0:23 \_ [jbd2/dm-5-8]
root 1478 0.0 0.0 0 0 ? D Jun04 0:03 \_ [jbd2/dm-7-8]
root 26661 0.0 0.0 0 0 ? D Jun09 5:41 \_ [jbd2/dm-14-8]
dm-10-8& dm-14-8与数据库分区有关.
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 3 240904 809656 572624 7114416 0 0 59 1681 2002 5141 3 1 67 30 0
0 4 240880 809656 572632 7114604 0 0 139 2069 2090 4985 3 1 67 29 0
1 2 240880 809284 572636 7114676 0 0 27 2159 2253 4247 2 1 72 25 0
5 2 240880 809408 572656 7114820 0 0 27 2404 2254 5350 3 1 69 27 0
我怀疑raid控制器,我怎么能确定?
解决方法:
我的回答有两部分:块设备驱动程序的调查;和优化值得用你的用例看.但我删除了最后一部分,因为据报道它可能导致数据丢失.看评论.
硬件调查
我明白,对于相同的应用程序,但在2个不同的硬件集上,性能是非常不同的,你想了解原因.因此,我首先提出一种方法来帮助您找到“为什么”的答案.
为了表现,我经常参考Brendan Gregg在其博客上提供的Linux Performance Map.可以看出,对于低级别(最接近硬件),像blktrace这样的工具将是完美的.
我真的不知道这个工具,我在周围搜索并发现了Marc Brooker的这个interesting article regarding blktrace.基本上它建议如下:使用blktrace执行I / O跟踪;使用btt工具从此跟踪中提取信息.这将是这样的(30秒跟踪):
# blktrace -w 30 -d /dev/dm-10-8 -o dm-10-8
# blkparse -d blkmerged.out dm-10-8*
# btt -i blkmerged.out | less
输出可能很长,但要查找D2C条目.它将让您了解传送到设备驱动程序的I / O被此驱动程序报告为已完成所需的时间.
示例输出(在我忙碌的笔记本电脑上的VirtualBox VM上运行dnf升级):
ALL MIN AVG MAX N
--------------- ------------- ------------- ------------- -----------
...
D2C 0.000046515 0.045781696 3.940577359 11713
...
它显示了令人失望的平均每个I / O 45毫秒,最坏的情况下高达3,94秒!
有关使用blktrace进行此调查的更多方法,请阅读Marc Brooker的文章,非常有启发性.
内容总结
以上是互联网集市为您收集整理的linux – 高IO等待 – 如何确定根本原因?全部内容,希望文章能够帮你解决linux – 高IO等待 – 如何确定根本原因?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。