查看原文
其他

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

2018-01-08 民工哥 民工哥Linux运维

需求介绍

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

   这可不,今天,有个需求是详细输出系统中各个应用(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可查看相关的帮助,进行过滤或选择

如果有小伙伴有更好的解决方案,欢迎积极在文未留言发表自己的见解与具体解决方案,相互学习,共同进步!!!Just do it!!!

推荐阅读

1

一大波学习资源干货分享

2

浅谈MySQL高可用集群架构

3

Xtrabackup实现数据备份与恢复

4

2017年公众号全年文章汇总

5

跟菜鸟一起学习Linux系统

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存