如何分析系统的 iowait 过高是什么引起的?

整了一台 4core 8GB RAM 的 aliyun 云主机,跑 rabbitmq(自建的 rabbitmq,不是买的服务)

使用中发现这个 rabbitmq 的吞吐量比较低

图片.png

整体的QPS,只有 1k-2k 之间。比起我心中预估 1w 左右的 QPS 差距比较大

所有的消息都是 delivery_mode:2 开启持久化
用的客户端是 python + nameko,跑了上百个客户端进程,所以问题应该不在 python 侧

所以我想排查一下原因,登录机器之后,先用 htop 看了看

可以看到 CPU 的负载不是很高
图片.png

又使用 sar 命令看看 CPU 的具体分布,可以看到 iowait 异常的高
图片.png

我能想到 io 的操作就是:

  • 网络io,每个 message 在几十字节到几MB 之间
  • 磁盘io,磁盘太慢

所以我又使用 glances 看了看具体情况:
图片.png

这个机器挂了两个磁盘

图片.png

是不是磁盘太差了导致的?

如何进一步分析问题?


看了一下磁盘占用率,貌似很高,估计就是磁盘瓶颈了

深入理解iostat, 非常详细的解读
iostat -x 1 10

图片.png

阅读 1.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题