我们在 Centos7 上的几个 Azure D12v2 实例上运行 ElasticSearch。
在索引数据时,机器的 IO 似乎相当差,每秒在 3MB 到 15MB 之间波动,这对于 SSD 存储来说明显很慢。
-- Taken from IOTOP --
Total DISK READ : 0.00 B/s | Total DISK WRITE : 3.01 M/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 2.68 M/s
-- Taken from IOTOP --
Total DISK READ : 0.00 B/s | Total DISK WRITE : 6.93 M/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 8.54 M/s
运行此类虚拟机的人是否也面临同样的问题?如果是这样,如何解决?我是否遗漏了什么,这些读写速度是“普通的“?
在物理机上进行同样的测试机械驱动取得更好的效果。
=====编辑=====
我将实例更改为 DS12v2,但性能仍然相似(在 30 到 50 MB/s 之间有一些随机峰值)
答案1
您可能需要向 Azure 支持部门咨询。但是,您也可以检查是否使用了合适的调度程序。对于这样的平台,您应该使用“noop”或“deadline”调度程序。要查看您使用的是什么调度程序,请尝试以下命令:
cat /sys/block/sda/queue/scheduler
(您的磁盘可能不是 sda,因此请根据需要进行更改)
这将输出几个调度程序选项,括号中的选项是您当前正在使用的。您可以通过以下方式发出所需的调度程序来临时更改此设置echo
:
echo noop > /sys/block/sda/queue/scheduler
scheduler=noop
如果需要在测试之外进行更改,您还可以将其指定为启动时内核参数。这可以通过编辑/etc/sysconfig/grub.cfg
并附加到scheduler=noop
内核参数来完成。