我用sysbench测试mysql的时候,用iotop
监控io,发现只有DiSH WRITE
速度,DISK READ
速度总是0。然后我用free -h
,发现buffer/cache增加了,是不是说sysbench的测试数据没有写入磁盘但是在缓冲区中并且没有自动更新到磁盘中?
非常感谢!
mysql在哪里运行??我不知道 iotop 及其测量值,但即使是微小的 sysbench 运行也会产生巨大的 IO。这可能是用户问题,也许 mysql 在不同的用户下生成 io 而没有被拾取。
# you can isolate the db into a container and run sysbench against this to see
# if/when/how much IO there is.
docker run --rm -it --name mdb105 --network host -e MYSQL_ALLOW_EMPTY_PASSWORD=on mariadb:10.5 --port=10306
# in another terminal run
docker stats
# now run sysbench, and you will see enormous IO
# you can get another shell in container named mdb105 by:
docker exec -it --user root mdb105 bash
# mariadb:10.5 is based on ubuntu:20.04
# you could maybe run iotop inside the container
更新:我能够使用树莓派复制类似您的零 IO 情况。确实 docker stats 显示没有 IO,而显然数据正在保存到磁盘。我最初的反应是,也许一些内核/发行版缺少某些设施,但它看起来不是内核/发行版,因为我在玩磁盘/fs 即外部 USB 磁盘时看到了 IO ...我认为这更多与不支持此类统计信息的 micro sd 卡及其控制器/驱动程序。而且由于您的 tps 非常低,我怀疑您也在使用类似于 micro sd 的东西。
这可能不会发生在 ec2 实例中。