使用top命令记录应用内存、CPU使用情况

💡 原文中文,约3900字,阅读约需10分钟。
📝

内容提要

该文章介绍了使用top命令记录应用程序占用系统资源的方法,并通过编写脚本定期记录内存泄漏和CPU占用过高等问题。脚本将top命令的输出追加到日志文件中,并按照内存和CPU使用率排序,显示前5个占用最高的进程。每分钟执行一次脚本。

🔎

延伸解读

脚本设计要点

脚本通过 while 循环每分钟执行一次,将 top 和 ps 命令的输出追加到日志文件。设置 COLUMNS=500 环境变量是为了防止重定向时输出被截断,确保日志内容完整。使用 top -o %MEM 按内存排序,并配合 head -20 限制输出行数,避免日志过大。同时,通过 ps 命令分别提取 CPU 和内存占用前 5 的进程,方便快速定位资源消耗高的应用。

日志内容解读

日志中每个时间戳分隔符后,首先显示 top 命令的摘要信息,包括系统负载、CPU 和内存使用概况。随后列出按内存排序的进程详情,以及 CPU 和内存占用前 5 的进程列表。这些数据可用于分析应用资源使用的长期趋势,例如内存占用是否持续增长,从而辅助判断内存泄漏或 CPU 异常。

适用场景与限制

该方法适用于追踪一段时间内应用的内存泄漏或 CPU 占用过高问题,尤其适合生产环境的初步排查。但需注意,脚本每分钟执行一次,可能产生大量日志,需定期清理或轮转。此外,top 和 ps 的输出为瞬时快照,可能无法捕捉到短时峰值,建议结合其他监控工具综合判断。

❓

Q&A

如何使用top命令记录应用程序的资源使用情况?

可以通过编写脚本使用top命令定期记录应用程序的内存和CPU使用情况,并将结果追加到日志文件中。

这个脚本是如何追踪内存泄漏和CPU占用过高的问题的?

脚本每分钟执行一次top命令,并将输出结果按内存和CPU使用率排序,记录前5个占用最高的进程。

脚本输出的日志文件包含哪些信息?

日志文件包含当前时间戳、资源使用率排序以及前5个占用最高的CPU和内存的进程信息。

top命令的输出是如何排序的?

top命令的输出根据内存使用率(%MEM)和CPU使用率(%CPU)进行排序。

脚本中使用的sleep命令有什么作用?

sleep命令用于让脚本每分钟执行一次,以便定期记录系统资源使用情况。

如何查看脚本执行后的效果?

可以查看生成的日志文件,里面记录了每次执行top命令的输出和相关的资源使用情况。

🏷️

标签

➡️

继续阅读