我们有一个专用服务器,运行许多较小的客户虚拟机,例如包含 HTTP 服务器、MySQL 和一些实时应用程序。
然而,我们发现客户机中的 JBD 通常每隔 5-10 秒就会达到 100% 的磁盘利用率。这会导致实时应用程序在尝试执行磁盘访问时因过于繁忙而挂起约 500-1000 毫秒。
日志文件中没有大量活动,使用 noatime、nobarrier 也无法禁用日志。MySQL 和 HTTP 服务器正在进行一些 IO 活动,但不是 100%。
答案1
在这种特殊情况下,高 IO 使用率是由 cron 作业定期执行一组 chmod 和 chown 命令引起的。在非虚拟主机上,这些命令的执行速度要快得多,但在虚拟主机内部,这些命令的执行速度要慢得多,并导致磁盘等待时间过长。
通过删除这些命令集,性能恢复正常,我们不再遇到奇怪的挂起。