磁盘读取 io 非常高,但没有进程执行 io 读取

磁盘读取 io 非常高,但没有进程执行 io 读取

我们遇到了一个非常奇怪的问题。由于磁盘读取 io 很高,服务器负载非常高。但是此服务器上运行的进程不执行任何磁盘读取操作。我们还注意到,当我们执行 top 命令时,对于大多数进程,“SHR”列中的值为零。与其他正常服务器相比,我们发现通过执行“free -m”,结果显示此服务器中的 buff/cache 值低于其他正常服务器的值。此服务器上未启用 Swap。此问题的原因可能是什么?

centos版本:CentOS Linux release 7.3.1611

内核版本:3.10.0-693.21.1.std7a.el7.0.x86_64

以下是 pidstat、free、vmstat 命令结果的屏幕截图

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

答案1

您提供的数据不会告诉任何人谁在读取什么以及为什么读取。即使您的应用程序代码根本不读取,JVM、库和 Java 字节码也需要加载到内存中,文件系统可能正在执行一些(元数据)读取,或者日志轮换可能涉及压缩旧日志文件等。

您可能需要进行某种分析来获取此类信息,这可以简单到只需制作一个或多个(手动)Java 堆栈转储,请参阅:https://www.baeldung.com/java-thread-dump或者使用某种分析器来执行此操作,也许还可以监视本机堆栈并生成火焰图,例如:http://www.brendangregg.com/offcpuanalysis.html

相关内容