由于mysql服务器的活动,等待率非常高

有时服务器速度很慢,需要很多时间来处理请求。 iotop平均磁盘读取速度为1-2 M / S(这实际上并不算多),然后服务器再次非常快。 而非常缓慢,根据顶部等待率约为60-90%。

根据mysql的调优引导,所有的mysqlcaching都可以。 所以我不知道为什么MySQL服务器做了太多的磁盘读取。 有没有什么办法来找出是什么原因造成如此多的I / O在MySQL读取?

我不得不说,这是一个虚拟服务器,那么另一个客户是否可以使用整个I / O容量呢?

理解你所拥有的底层存储层是一件好事。 你有一个单一的物理磁盘? less数磁盘或大型存储arrays的RAID1或RAID5,其中LUN由许多(40+)个物理驱动器组成。 每个物理驱动器可以给你大约150-200个请求/秒(取决于rorational速度)。

所以MB / s图在iostat / sar / dstat输出中并不重要,因为对于顺序读/写,现代驱动器可以做到超过100 MB / s,但对于例如8kB大小的随机请求,它会给你只有150 * 8kB = 1.2 MB / s。 来自数据库服务器的请求几乎总是随机的。

要看的最佳指标始终是io服务时间 – 这是存储为读取或写入请求提供服务所需的时间。 您不必担心有多less个磁盘,如果服务时间比15-20毫秒(毫秒)更低,那么您知道您的存储性能良好。 在具有电池支持caching(BBWC)的几乎空闲的服务器上,您应该看到写入服务时间less于1毫秒,读取时间less于5毫秒。 此指标也适用于VPS,因为即使存储器忙于服务其他客户端,它也会显示较高的服务时间。

使用sar来查找服务器上的io活动的历史logging。 我认为sar已经在该服务器上configuration和运行了。 如果不这样做。 那么有可能是其他虚拟机做沉重的IO呼叫,你的MySQL正忙着等待IO。 我build议不要有mysql或任何数据库,甚至有中等stream量的VPS解决scheme。 如果服务真正的stream量,那么它应该在物理服务器上,因为VPS上的io往往是坏的,而且不好的io的mysql执行得不好,并且有db的全部影响。