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

linux下查问过程占用的内存办法总结,假定如今有一个「php-cgi」的过程 ,过程id为「25282」。如今念要查问该过程占用的内存巨细。linux饬令行下有良多的东西停止检查,现总结罕见的多少种体式格局。

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

经过过程的 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

关头讯息点

一、过程ID

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

三、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,co妹妹,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,co妹妹,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

输入列音信


PID 25282用户 nobody假造内存 428M物理内存 110M 110*1024= 112640 「以及后面较量争论进去的值根本分歧」同享内存 93M过程运用的物理内存以及总内存的百分比 1.9 %
PID:过程的ID
USER:过程一切者
PR:过程的优先级别,越小越优先被履行
NInice:值
VIRT:过程占用的假造内存
RES:过程占用的物理内存
SHR:过程运用的同享内存
S:过程的形态。S透露表现息眠,R透露表现在运转,Z透露表现僵逝世形态,N透露表现该过程优先值为正数
%CPU:过程占用CPU的运用率
%MEM:过程运用的物理内存以及总内存的百分比
TIME+:该过程启动后占用的总的CPU工夫,即占用CPU运用工夫的累加值。
COMMAND:过程启动饬令称号

按P

PID 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排序

按M

PID 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,co妹妹,args,pcpu,rsz,vsz,stime,user,uid' | sort -k5nr

第二种办法

ps -e -o 'pid,co妹妹,args,pcpu,rsz,vsz,stime,user,uid' --sort -rsz

输入后果

[root@web3_u ~]# ps -e -o 'pid,co妹妹,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 过程IDco妹妹 过程名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:过程的IDUSER:过程一切者VIRT:过程占用的假造内存RES:过程占用的物理内存SHR:过程运用的同享内存S:过程的形态。S透露表现息眠,R透露表现在运转,Z透露表现僵逝世形态,N透露表现该过程优先值为正数%CPU:过程占用CPU的运用率%MEM:过程运用的物理内存以及总内存的百分比TIME+:该过程启动后占用的总的CPU工夫,即占用CPU运用工夫的累加值。

经过比拟过程ID 「23946」,top 饬令以及 ps 饬令输入的后果根本坚持分歧

十年磨一剑


您可以还会对下面的文章感兴趣:

最新评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。