0

最近我在 jboss eap 7 中运行的 java 应用程序中遇到了一个问题。

我的 java 应用程序派生的所有进程都挂起并且没有运行。当我进一步调试时,我发现 cpu 已被某个进程使用完成,并且我的 java 应用程序没有 cpu。当我查看 linux 服务器的 sar 报告时,我可以看到“iowait”非常高(大约 96 % 到 98 %)

有什么方法可以找到哪个进程消耗了这么多的 iowait,有没有什么方法可以每天记录 (top, iotop, iostat) 的输出以找到根本原因,直到这个问题解决......?

请建议我找到根本原因,在此先感谢...

4

1 回答 1

0

与 top 非常相似,实用程序 iotop 与 top 有很多共同点,包括使其以批处理模式运行的标志,以及强制它只执行这么多迭代的选项。因此,您可以每隔几分钟运行一次 cron 作业,并将 iotop 的输出附加到文件中。不幸的是,iotop 根本没有任何日期时间戳,因此您可能希望添加类似这样的内容(此 onlu 会在每次运行 iotop 开始时输出日期):

iostat -b -n 1 | awk 'NR==1 {打印 strftime()}; {print}' >> 日志文件

您可以通过 cron 作业每 10 分钟运行一次,其中分钟归档为 */10。

于 2021-09-20T07:25:54.337 回答