linux吃内存办法,Linux 下找出吃内存的方法总结

Linux 下找出吃内存的方法总结

来自:Linux就该这么学

linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」。现在想要查询该进程占用的内存大小。linux命令行下有很多的工具进行查看,现总结常见的几种方式。787f85e47cad66f2d8f7e190ec8b1e1d.png

通过进程的 status[root@web3_u ~]# cat /proc/25282/status

Name: php-cgi

State: S (sleeping)

Tgid: 25282

Pid: 25282

PPid: 27187

TracerPid: 0

Uid: 99 99 99 99

Gid: 99 99 99 99

Utrace: 0

FDSize: 256

Groups: 99

VmPeak: 496388 kB

VmSize: 438284 kB

VmLck: 0 kB

VmHWM: 125468 kB

VmRSS: 113612 kB

VmData: 92588 kB

VmStk: 100 kB

VmExe: 6736 kB

VmLib: 18760 kB

VmPTE: 528 kB

VmSwap: 0 kB

Threads: 1

SigQ: 0/46155

SigPnd: 0000000000000000

ShdPnd: 0000000000000000

SigBlk: 0000000000000000

SigIgn: 0000000000001000

SigCgt: 0000000184000004

CapInh: 0000000000000000

CapPrm: 0000000000000000

CapEff: 0000000000000000

CapBnd: ffffffffffffffff

Cpus_allowed: f

Cpus_allowed_list: 0-3

Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001

Mems_allowed_list: 0

voluntary_ctxt_switches: 68245

nonvoluntary_ctxt_switches: 15751

VmRSS: 113612 kB 表示占用的物理内存

通过 pmap[root@web3_u ~]# pmap -x 25282

25282: /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf

Address Kbytes RSS Dirty Mode Mapping

0000000000400000 6736 2692 0 r-x-- php-cgi

0000000000c93000 264 196 120 rw--- php-cgi

0000000000cd5000 60 48 48 rw--- [ anon ]

. . .

00007fd6226bc000 4 4 4 rw--- ld-2.12.so

00007fd6226bd000 4 4 4 rw--- [ anon ]

00007fff84b02000 96 96 96 rw--- [ stack ]

00007fff84bff000 4 4 0 r-x-- [ anon ]

ffffffffff600000 4 0 0 r-x-- [ anon ]

---------------- ------ ------ ------

total kB 438284 113612 107960

关键信息点

1、进程ID

2、启动命令「/usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf」

3、RSS :占用的物理内存 113612KB

通过 smaps[root@web3_u ~]# cat /proc/25282/smaps | grep ^Rss: \

| awk {sum +=$2} END{print sum}

113612

求和得到实际占用物理内存为 113612

通过 ps 命令[root@web3_u ~]# ps -e -o pid,comm,args,pcpu,rsz,vsz,stime,user,uid \

| awk $1 ~ /25282/

25282 php-cgi /usr/local/php/bin/php-cgi 0.0 113612 438284 Oct09 nobody 99

awk 过滤 25282 进程号,得到第5列「rsz」的内存大小为「113612」

输出php-cgi进程占用的物理内存,并从高到低进行排序[root@web3_u ~]# ps -e -o pid,comm,args,pcpu,rsz,vsz,stime,user,uid \

| grep php-cgi | sort -k5nr

输出结果23946 php-cgi /usr/local/php/bin/php-cgi 0.0 129540 440000 Oct06 nobody 99

24418 php-cgi /usr/local/php/bin/php-cgi 0.0 129336 437684 Oct06 nobody 99

18973 php-cgi /usr/local/php/bin/php-cgi 0.0 129268 440176 Oct06 nobody 99

17219 php-cgi /usr/local/php/bin/php-cgi 0.0 126588 439840 Oct06 nobody 99

6996 php-cgi /usr/local/php/bin/php-cgi 0.0 124876 438104 Oct09 nobody 99

23850 php-cgi /usr/local/php/bin/php-cgi 0.0 122984 440036 Oct09 nobody 99

28310 php-cgi /usr/local/php/bin/php-cgi 0.0 122920 436456 Oct09 nobody 99

其中rsz为实际内存,上例实现按内存排序,由大到小

TOP 命令输出的列PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

25282 nobody 20 0 428m 110m 93m S 0.0 1.9 0:34.42 php-cgi

输出列信息

1、PID 25282

2、用户 nobody

3、虚拟内存 428M

4、物理内存 110M 110*1024= 112640 「和前面计算出来的值基本一致」

5、共享内存 93M

6、进程使用的物理内存和总内存的百分比 1.9 %PID:进程的ID

USER:进程所有者

PR:进程的优先级别,越小越优先被执行

NInice:值

VIRT:进程占用的虚拟内存

RES:进程占用的物理内存

SHR:进程使用的共享内存

S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数

%CPU:进程占用CPU的使用率

%MEM:进程使用的物理内存和总内存的百分比

TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。

COMMAND:进程启动命令名称

按PPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

16036 root 20 0 8902m 8.6g 480 R 100.0 36.6 0:33.15 redis-server

12934 root 20 0 8902m 8.6g 1072 S 5.5 36.6 285:37.81 redis-server

969 root 20 0 0 0 0 D 4.2 0.0 277:14.85 flush-252:16

1304 root 23 3 1689m 50m 3264 S 4.2 0.2 1445:03 xs-searchd

1294 root 20 0 14928 928 584 S 3.5 0.0 635:05.31 xs-indexd

1287 nobody 20 0 12884 772 576 S 2.8 0.0 833:11.42 dnsmasq

1302 root 23 3 1113m 39m 3244 S 0.7 0.2 1437:57 xs-searchd

4444 www 20 0 280m 43m 884 S 0.7 0.2 27:43.92 nginx

1 root 20 0 19232 1160 868 S 0.0 0.0 0:06.75 init

按 P .表示按cpu排序,默认也是按cpu排序

按MPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

12934 root 20 0 8902m 8.6g 1072 S 6.0 36.6 285:39.77 redis-server

16036 root 20 0 8902m 8.6g 480 R 100.0 36.6 1:11.42 redis-server

1236 www 20 0 1053m 209m 6556 S 0.0 0.9 4:40.70 php-cgi

1231 www 20 0 1034m 146m 6536 S 0.0 0.6 4:20.82 php-cgi

1184 www 20 0 1043m 119m 6584 S 0.0 0.5 4:21.85 php-cgi

按M 。表示按占用内存排序。第一列 redis服务器占用了8.6G的内存 。这个内存和redis info[root@img1_u ~]# redis-cli info memory

# Memory

used_memory_human:8.32G

基本相同。[root@img1_u ~]# top -u www

top - 22:09:01 up 67 days, 14:16, 1 user, load average: 0.61, 0.90, 0.98

Tasks: 283 total, 2 running, 281 sleeping, 0 stopped, 0 zombie

Cpu(s): 3.9%us, 1.0%sy, 0.5%ni, 89.7%id, 4.6%wa, 0.0%hi, 0.3%si, 0.0%st

Mem: 24542176k total, 21130060k used, 3412116k free, 1750652k buffers

Swap: 524280k total, 0k used, 524280k free, 4039732k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

681 www 20 0 855m 25m 5796 S 0.0 0.1 0:47.00 php-cgi

1181 www 20 0 887m 57m 6484 S 0.0 0.2 4:41.66 php-cgi

1183 www 20 0 864m 34m 6320 S 0.0 0.1 3:52.39 php-cgi

1184 www 20 0 1043m 119m 6584 S 0.0 0.5 4:21.85 php-cgi

1185 www 20 0 869m 39m 6376 S 0.0 0.2 3:57.84 php-cgi

1186 www 20 0 886m 56m 6244 S 0.0 0.2 3:44.75 php-cgi

1187 www 20 0 926m 66m 6480 S 0.0 0.3 4:16.12 php-cgi

1188 www 20 0 890m 60m 6288 S 0.0 0.3 4:13.35 php-cgi

1189 www 20 0 892m 62m 6408 S 0.0 0.3 4:06.60 php-cgi

-u 指定用户。php-cgi占用的内存在60M左右

按进程消耗内存多少排序的方法

通过 ps 命令

第一种方法ps -e -o pid,comm,args,pcpu,rsz,vsz,stime,user,uid | sort -k5nr

第二种方法ps -e -o pid,comm,args,pcpu,rsz,vsz,stime,user,uid --sort -rsz

输出结果[root@web3_u ~]# ps -e -o pid,comm,args,pcpu,rsz,vsz,stime,user | sort -k5nr

23946 php-cgi /usr/local/php/bin/php-cgi 0.0 129540 440000 Oct06 nobody

24418 php-cgi /usr/local/php/bin/php-cgi 0.0 129336 437684 Oct06 nobody

18973 php-cgi /usr/local/php/bin/php-cgi 0.0 129268 440176 Oct06 nobody

17219 php-cgi /usr/local/php/bin/php-cgi 0.0 126588 439840 Oct06 nobody

6996 php-cgi /usr/local/php/bin/php-cgi 0.0 125056 438104 Oct09 nobody

23850 php-cgi /usr/local/php/bin/php-cgi 0.0 122984 440036 Oct09 nobody

参数解析:-e 显示所有进程

-o 定制显示信息

pid 进程ID

comm 进程名

args 启动命令

pcpu 占用CPU 百分比

rsz 占用物理内存大小

vsz 占用虚拟内存大小

stime 进程启动时间

user 启动用户

以第一行为例进程ID 23946

进程名 php-cgi

启动命令 /usr/local/php/bin/php-cgi

占用CPU 0

占用物理内存 129540

占用虚拟内存 440000

启动时间 Oct06

启动用户 nobody

通过 top 命令

top命令默认是以CPU排序输出的,按字母「M」,可以按内存占用大小进行排序显示PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

23946 nobody 20 0 429m 126m 107m S 0.0 2.2 1:15.01 php-cgi

24418 nobody 20 0 427m 126m 109m S 0.0 2.2 1:19.56 php-cgi

18973 nobody 20 0 429m 126m 107m S 0.0 2.2 1:20.18 php-cgi

17219 nobody 20 0 429m 123m 104m S 0.0 2.1 1:23.60 php-cgi

6996 nobody 20 0 427m 122m 105m S 0.0 2.1 1:05.27 php-cgi

23850 nobody 20 0 429m 120m 101m S 0.0 2.1 1:02.43 php-cgi

输出参数介绍PID:进程的ID

USER:进程所有者

VIRT:进程占用的虚拟内存

RES:进程占用的物理内存

SHR:进程使用的共享内存

S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数

%CPU:进程占用CPU的使用率

%MEM:进程使用的物理内存和总内存的百分比

TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。

通过比较进程ID 「23946」,top 命令和 ps 命令输出的结果基本保持一致

Linux 下找出吃内存的方法总结 相关文章

Linux 下查看某一个程序所使用的内存方法介绍

Linux 下查看某一个程序所使用的内存方法介绍 Linux 下查看某一个程序所使用的内存方法介绍 在 Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况。常用方法总结如下(注意第四种方法): 第一种...

Linux 下查看某一个程序所使用的内存方法

在 Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况。有很多个命令都可以达到我们的需求,这里给大家列举几个: 1: top -p pid 查看程序的情况 2: ps -aux | grep process_name 3: cat /proc/pid/status 这里会...

如何在 Linux 中找出内存消耗最大的进程

很多次,你可能遇见过系统消耗了过多的内存。如果是这种情况,那么最好的办法是识别出 Linux 机器上消耗过多内存的进程。我相信,你可能已经运行了下文中的命令以进行检查。如果没有,那你尝试过哪些其他的命令?我希...

如何在 Linux 中找出内存消耗最大的进程

如何在 Linux 中找出内存消耗最大的进程 # ps aux --sort -rss | headUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDmysql 1064 3.2 5.4 886076 209988 ? Ssl Oct25 62:40 /usr/sbin/mysqldvarnish 23396 0.0 2.9 286492 115616 ? SLl Oct25 0:42 /

Linux基础如何找出你的系统所支持的最大内存

大多数情况下你可以从BIOS、产品目录或者干脆手动找出你的系统所持的最大内存。这里,我们介绍一种简单有用的技巧使用dmidecode来找出系统支持的最大内存,这样你就无需打开机箱或者参照BIOS和产品目录了。 什么是 dmidecode ...

jmeter在linux系统下运行,以及本地内存调优的方法

1.在linux系统下安装跨系统传输文件工具 root用户下 根目录输入 yum -y install lrzsz 2.把apache-jmeter-4.0zip包 用rz命令上传到linux系统的根目录下 解压 3.配置jmeter环境变量 vim /etc/profile 添加 export PATH= /apache-jmeter-4.0/bin/: $PATH 注意

Linux下常用系统分析工具总结(CPU网络磁盘内存)

Linux下常用系统分析工具总结(CPU,网络,磁盘,内存) http://os.51cto.com/art/201706/543760.htm?utm_source=tuicoolutm_medium=referral 对于程序员来说,整个计算机系统由四个重要的模块组成,分别是:CPU,网络,磁盘,内存。在我们的程序或者系...

Linux 中 4 个简单的找出进程 ID(PID)的方法

每个人都知道 PID,究竟什么是 PID?为什么你想要 PID?你打算用 PID 做什么?你脑子里有同样的问题吗?如果是这样,你就找对地方了解这些细节了。 我们查询 PID 主要是用来杀死一个没有响应的程序,它类似于 Windows 任务管理...

deepin20风扇声音大吃系统盘内存解决方法(iwlwifi Unhandled al

deepin20风扇声音大,吃系统盘内存解决方法(iwlwifi Unhandled alg:0x707) 第一次安装deepin20后,用了一天左右发现风扇一直在转,用df命令查看内存空间,发现挂载系统盘的内存不断在上升,最后会导致系统崩溃 关掉wifi和有线网卡,...

内存泄漏的场景分析和避免方法总结,C语言内存泄漏详解

大家都知道,在堆上分配的内存,如果不再使用了,就应该及时释放,以便后面其他地方可以重用。而在 C 语言中,内存管理器不会自动回收不再使用的内存。如果忘了释放不再使用的内存,这些内存就不能被重用了,这就造成...

Linux下进程的内存布局

Linux下进程的内存布局 目录 目录 进程空间内存布局 栈 堆 非初始化数据段 初始化数据段 文本段也称代码段 Linux下内存布局分布图 Linux C/C++语言的分配方式的 3 种方式 进程空间内存布局 在深入理解Linux下多进程编程之前,我们...

Linux下查看内存的命令是什么

查看内存的命令是free命令。Linux free命令可以显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。 课程推荐:《linux课程》 在Linux下面,我们常用top命令来查看系统进程,top也能显示系统内存。我们常用...

Linux下检测内存泄露的工具 valgrind

Linux下检测内存泄露的工具 valgrind 参考: http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html 几乎是照抄参考过来的,只不过后面自己调试一下代码。 这里主要介绍Valgrind的一些 简单用法 。 更多详细的使用方法可以访问valgrind的主...

如何找出发生SEGV内存错误的程序

如何找出发生SEGV内存错误的程序 ?问题 ?18-Feb-2014 15:48:45] WARNING: [pool www] child 11274 exited on signal 11 (SIGSEGV) after 0.089068 seconds from start 显然11274进程运行过程中遇到了段错误导致进程异常退出了。继续追查发现是php的hsf扩展在

如何查看 Linux 下 CPU内存和交换分区的占用率 Linux 中国

如何查看 Linux 下 CPU、内存和交换分区的占用率? | Linux 中国 在大多数情况下我们只想查看内存使用情况,并没有考虑占用的百分比究竟是多少。如果你想要了解这些信息,那你看这篇文章就对了。-- Vinoth Kumar 在 Linux 下有很多...

linux下查看某一进程占用的内存

linux下查看某一进程占用的内存 一、Linux下查看某一个进程所占用的内存,首先可以通过ps命令找到进程id ps -ef|grep nacos 可以看到nacos进程为461,现在可以使用如下命令查看内存: top -p 461 这样可以动态实时的看到CPU和内存的占用...

linux实现共享内存同步的四种方法

linux实现共享内存同步的四种方法 本文主要对实现共享内存同步的四种方法进行了介绍。 共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝。它是IPC对象的一种。 为了在多个进程间...

17 种查看 Linux 物理内存的方法

大多数系统管理员在遇到性能问题时会检查 CPU 和内存利用率。Linux 中有许多实用程序可以用于检查物理内存。这些命令有助于我们检查系统中存在的物理内存,还允许用户检查各种方面的内存利用率。 我们大多数人只知道很少...

Linux系统下获取系统的内存使用情况(C语言代码)

Linux系统下获取系统的内存使用情况(C语言代码) 通过sysinfo函数获取系统内存的使用情况。 sysinfo函数的帮助页如下: [emailprotected]:/mnt/hgfs/linux-share-dir/linux_c$ man sysinfoSYSINFO(2) Linux Programmer's Manual SYSINFO(2)NAME sysinfo - retu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值