一次实际生产需求引发的“胡思乱想”的后果

2020-09-16 17:03:36 浏览数 (1)

需求介绍

实际生产常常会有这样哪样的需求,可以说是千奇百怪,无所不有,

这可不,今天,有个需求是详细输出系统中各个应用(JAVA项目)所占的内存大小,单位以MB显示出来,结果需要直观,为什么有此需求呢?

是因为,在内部测试环境中,开发出来的项目上测试环境运行后,要实际观察运行后所占的系统内存数量,如果一旦有大数据交互时,此项目消耗的内存较高,那么可能就需要从代码层面进行优化,以满足上线后项目的稳定运行!

top命令解决思路

首先想到是top命令

但是结果显示只有JAVA应用占内存的百分比,没法正确显示所要的结果

top 命令显示结果,输入M 按%MEM显示,仍然是JAVA的应用的结果百分比,不是具体项目名称

top -c 在显示的结果中输出M 按%MEM显示

基本能满足需求了,结果也还挺直观

ps命令解决思路

[root@linux1 ~]# ps -ef --sort -rss|grep java

这个命令显示的结果也只是做了个占用大小按应用名称排序,无法知道所占用内存是多少,也没办法看出百分比

[root@linux1 ~]# ps -aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

使用此命令然后根据实际使用内存排序,默认显示单位是kb(/1024)通过计算可以得出所占用的大小,基本满足需求 [root@linux1 ~]# ps -aux --sort -rss|grep java

[root@linux1 ~]# ps -e -o 'pid,args,rsz,pcpu'|grep java|sort -n

此命令和上面的结果显示基本相同,默认单位也是kb

htop解决思路

[root@linux1 ~]# htop --help

htop 2.0.2 - (C) 2004-2016 Hisham Muhammad

Released under the GNU GPL.

-C --no-color Use a monochrome color scheme

-d --delay=DELAY Set the delay between updates, in tenths of seconds

-h --help Print this help screen

-s --sort-key=COLUMN Sort by COLUMN (try --sort-key=help for a list)

-u --user=USERNAME Show only processes of a given user

-p --pid=PID,[,PID,PID...] Show only the given PIDs

-v --version Print version info

[root@linux1 ~]# htop --sort-key=M_SIZE

显示的结果如图,与需求比较接近,就是无法去重,需要手工up/down去看其它的

输入F1可查看相关的帮助,进行过滤或选择

0 人点赞