在 Ubuntu 上跟踪内存进程

在 Ubuntu 上跟踪内存进程

我有一个 rails 3 应用程序,每天有 100-200 个独立访问者。服务器(Ubuntu)上消耗的总内存约为 1.5-2 GB。我想知道每个进程使用了​​多少内存。跟踪不同进程使用的内存的最佳工具是什么?

答案1

您只需启动top并按下即可M根据内存使用情况对进程进行排序。

您可以运行ps vax | sort -k8n来显示按驻留堆栈使用情况排序的进程(ps v切换到以内存为中心的视图)。

您可以启用 snmp 并配置 mrtg 来定期轮询系统,生成您关心的进程使用了​​多少内存的图表。

您可以接受这样的事实:尽管 Ruby 有很多优点,但它在管理长时间运行的进程中的内存方面却很糟糕。:)

你可以结合更复杂的附言命令行(查看手册页,并阅读有关 -o 选项的信息)并rrdtool使用 shell 脚本生成您关心的进程的历史统计数据。

ETC。

答案2

内存管理非常困难,但您可以使用tophtop或者,正如 dannysauer 建议的那样,使用类似的东西ps vax | sort -k8n。如果您想获得概述/摘要,那么就free -m很好。

但是进程消耗的内存比它们使用的内存少是很常见的。例如,如果你有 10 个进程,每个进程使用 10MB,这并不意味着这些进程将消耗 100MB。原因是 Linux 会识别进程之间相同的内存部分,因此你不需要拥有许多相同的副本。换句话说,你的系统总是可以使用比你拥有的更多的内存。所以你真的需要区分内存消耗和内存使用。

这并不总是容易的事。

相关内容