admin 管理员组文章数量: 887021
2024年1月17日发(作者:whitewashing)
Linux下查询进程占用的内存方法总结
前言
大家好,这里是浩道(Linux),主要给大家分享Linux、(Python)、(网络通信)、(网络)安全等相关的IT知识平台。
今天浩道跟大家一篇关于运维牛人如何在Linux下挖出吃内存的进程,可以说是相当干的一个运维技能了,一起看看吧!
linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」。现在想要查询该进程占用的内存大小。linux命令行下有很多的工具进行查看,现总结常见的几种方式。
第 1 页 共 11 页
通过进程的 status
[root@web3_u ~]# cat /proc/25282/statusName: php-cgiState: S (sleeping)Tgid: 25282(Pi)d: 25282PPid: 27187Tr((acDSi))erPid: 0Uid: 99 99 99 99Gid: 99 99 99 99Utrace: 0Fze: 256Groups: 99VmPeak: 496388 kBVmSize: 438284 kBVmLck: 0 kBVmHWM: 125468 kBVm(RS)S: 113612 kBVmData: 92588 kBVmStk: 100 kBVmExe: 6736 kBVmLib: 187
第 2 页 共 11 页
60 kBVmP(TE): 528 kBVmSwap: 0 kBThre(ad)s: 1SigQ: 0/46155SigPnd: 0000ShdPnd: 0000SigBlk: 0000SigIgn: 1000SigCgt: 0004CapInh: 0000CapPrm: 0000CapEff: 0000CapBnd: ffffffffffffffffs_allowed: fCpus_allowed_list: 0-3((CpuMems))_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001Mems_allowed_list: 0voluntary_ctxt_switches: 68245nonvoluntary_ctxt_switches: 15751
VmRSS: 113612 kB 表示占用的物理内存
通过 pmap
[root@web3_u ~]# pmap -x 2528225282: /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/dress Kbytes RSS Dirty Mode Mapping0000 6736 2692 0 r-x-- php-cgic93000 264 196 120 rw--- php-cgicd5000 60 48 48 rw--- [
anon ]. . .00007fd6226bc000 4 4 4 rw--- 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
第 3 页 共 11 页
关键信息点
1、进程ID
2、启动命令
「/usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/」
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」
第 4 页 共 11 页
输出php-cgi进程占用的物理内存,并从高到低进行排序
[root@web3_u ~]# ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' |
grep php-cgi | s(or)t -k5nr
输出结果
23946 php-cgi /usr/local/php/bin/php-cgi 0.0 129540 440000 Oct06 nobody 9924418 php-cgi /usr/local/php/bin/php-cgi 0.0 129336 437684 Oct06 nobody 9918973 php-cgi /usr/local/php/bin/php-cgi 0.0 129268 440176 Oct06 nobody 9917219 php-cgi /usr/local/php/bin/php-cgi 0.0 126588 439840 Oct06 nobody 996996 php-cgi /usr/local/php/bin/php-cgi 0.0 124876 438104 Oct09 nobody 9923850 php-cgi /usr/local/php/bin/php-cgi 0.0 122984 440036 Oct09 nobody 9928310 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 (TI)ME+ COMMAND25282 nobody 20 0 428m 110m 93m S 0.0 1.9 0:34.42 php-cgi
第 5 页 共 11 页
输出列信息
1、PID 25282
2、用户 nobody
3、虚拟内存 428M
4、物理内存 110M 110*1024= 112640 「和前面计算出来的值基本一致」
5、共享内存 93M
6、进程使用的物理内存和总内存的百分比 1.9 %
PID:进程的IDUSER:进程所有者PR:进程的优先级别,越小越优先被执行NIn(ic)e:值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+ COMMAND16036 root 20 0 8902m 8.6g 480 R 100.0 36.6 0:33.15 redis-server12934 root 20 0 8902m 8.6g 1072 S 5.5 36.6 285:37.81 redis-server969 root 20 0 0 0 0 D
第 6 页 共 11 页
4.2 0.0 277:14.85 flush-252:161304 root 23 3 1689m 50m 3264 S 4.2 0.2
1445:03 xs-searchd1294 root 20 0 14928 928 584 S 3.5 0.0 635:05.31 xs-indexd1287 nobody 20 0 12884 772 576 S 2.8 0.0 833:11.42 dnsmasq1302 root 23 3 1113m 39m 3244 S 0.7 0.2 1437:57 xs-searchd4444 www 20
0 280m 43m 884 S 0.7 0.2 27:43.92 nginx1 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+ COMMAND12934 root 20 0 8902m 8.6g 1072 S 6.0 36.6 285:39.77 redis-server16036 root 20
0 8902m 8.6g 480 R 100.0 36.6 1:11.42 redis-server1236 www 20 0 1053m 209m 6556 S 0.0 0.9 4:40.70 php-cgi1231 www 20 0 1034m 146m 6536 S 0.0 0.6 4:20.82 php-cgi1184 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# Memoryused_memory_human:8.32G
第 7 页 共 11 页
基本相同。
[root@img1_u ~]# top -u wwwtop - 22:09:01 up 67 days, 14:16, 1 user, load average: 0.61, 0.90, 0.98Tasks: 283 total, 2 running, 281 sleeping, 0 stopped, 0 zombieCpu(s): 3.9%us, 1.0%sy, 0.5%ni, 89.7%id, 4.6%wa, 0.0%hi, 0.3%si, 0.0%stMem: 24542176k total, 21130060k used, 3412116k free, 1750652k buffersSwap: 524280k total, 0k used, 524280k free, 4039732k cachedPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND681 www 20 0 855m 25m 5796 S 0.0 0.1 0:47.00 php-cgi1181 www 20
0 887m 57m 6484 S 0.0 0.2 4:41.66 php-cgi1183 www 20 0 864m 34m 6320 S 0.0 0.1 3:52.39 php-cgi1184 www 20 0 1043m 119m 6584 S 0.0 0.5 4:21.85 php-cgi1185 www 20 0 869m 39m 6376 S 0.0 0.2 3:57.84 php-cgi1186 www 20 0 886m 56m 6244 S 0.0 0.2 3:44.75 php-cgi1187 www 20 0 926m 66m 6480 S 0.0 0.3 4:16.12 php-cgi1188 www 20 0 890m 60m
6288 S 0.0 0.3 4:13.35 php-cgi1189 www 20 0 892m 62m 6408 S 0.0 0.3
4:06.60 php-cgi
-u 指定用户。php-cgi占用的内存在60M左右
按进程消耗内存多少排序的方法
通过 ps 命令
第一种方法
第 8 页 共 11 页
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 -k5nr23946 php-cgi /usr/local/php/bin/php-cgi 0.0 129540 440000 Oct06 nobody24418 php-cgi /usr/local/php/bin/php-cgi 0.0 129336 437684
Oct06 nobody18973 php-cgi /usr/local/php/bin/php-cgi 0.0 129268 440176 Oct06 nobody17219 php-cgi /usr/local/php/bin/php-cgi 0.0 126588
439840 Oct06 nobody6996 php-cgi /usr/local/php/bin/php-cgi 0.0 125056 438104 Oct09 nobody23850 php-cgi /usr/local/php/bin/php-cgi 0.0 122984 440036 Oct09 nobody
参数解析:
-e 显示所有进程
-o 定制显示信息
pid 进程ID
comm 进程名
第 9 页 共 11 页
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+ COMMAND23946 nobody 20 0 429m 126m 107m S 0.0 2.2 1:15.01 php-cgi24418 nobody 20
0 427m 126m 109m S 0.0 2.2 1:19.56 php-cgi18973 nobody 20 0 429m 126m 107m S 0.0 2.2 1:20.18 php-cgi17219 nobody 20 0 429m 123m 104m S 0.0 2.1 1:23.60 php-cgi6996 nobody 20 0 427m 122m 105m S 0.0 2.1 1:05.27 php-cgi23850 nobody 20 0 429m 120m 101m S 0.0 2.1 1:02.43
第 10 页 共 11 页
php-cgi
输出参数介绍
PID:进程的ID
USER:进程所有者
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
通过比较进程ID 「23946」,top 命令和 ps 命令输出的结果基本保持一致
第 11 页 共 11 页
版权声明:本文标题:Linux下查询进程占用的内存方法总结 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705481072h486543.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论