使用sar,sysstat获取每个进程的内存使用情况

时间:2017-04-20 23:30:43

标签: linux monitoring sar

我可以使用Linux获得每个进程的内存使用量吗? 我们使用sysstat / sar监控我们的服务器。但除此之外 看到记忆在某个时刻脱离了屋顶,我们无法精确定位 哪个过程变得越来越大。 是否有一种方法可以使用sar(或其他工具)来获取内存 每个过程? ,看看它,稍后呢?

2 个答案:

答案 0 :(得分:0)

这纯粹是偏好,但在你知道自己在寻找什么之前,我会保持简洁。我会创建一个cronjob来首先输出你的可用内存,磁盘和CPU使用情况,然后显示十大罪魁祸首。

#!/bin/sh
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}'
top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}' 
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head

找到罪魁祸首之后,你可以多练习一下,深入了解一些细节。

答案 1 :(得分:0)

sysstat包括pidstat,其手册页显示:

  

pidstat命令用于监视Linux内核当前正在管理的各个任务。它为使用选项-p选择的每个任务或Linux内核管理的每个任务写入标准输出活动[...]

Linux内核任务包括用户空间进程和线程(以及内核线程,在此最不重要)。

但是不幸的是,sysstat不支持从pidstat收集历史数据,并且作者似乎也没有兴趣提供这种支持(GitHub问题):