整了一台 4core 8GB RAM 的 aliyun 云主机,跑 rabbitmq(自建的 rabbitmq,不是买的服务)
使用中发现这个 rabbitmq 的吞吐量比较低
整体的QPS,只有 1k-2k 之间。比起我心中预估 1w 左右的 QPS 差距比较大
所有的消息都是delivery_mode:2
开启持久化
用的客户端是 python + nameko,跑了上百个客户端进程,所以问题应该不在 python 侧
所以我想排查一下原因,登录机器之后,先用 htop 看了看
可以看到 CPU 的负载不是很高
又使用 sar 命令看看 CPU 的具体分布,可以看到 iowait 异常的高
我能想到 io 的操作就是:
- 网络io,每个 message 在几十字节到几MB 之间
- 磁盘io,磁盘太慢
所以我又使用 glances 看了看具体情况:
这个机器挂了两个磁盘
是不是磁盘太差了导致的?
如何进一步分析问题?
看了一下磁盘占用率,貌似很高,估计就是磁盘瓶颈了
深入理解iostat, 非常详细的解读iostat -x 1 10