千家信息网

Linux下怎么快速查找内存占用过高进程

发表于:2025-02-13 作者:千家信息网编辑
千家信息网最后更新 2025年02月13日,今天小编给大家分享一下Linux下怎么快速查找内存占用过高进程的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下
千家信息网最后更新 2025年02月13日Linux下怎么快速查找内存占用过高进程

今天小编给大家分享一下Linux下怎么快速查找内存占用过高进程的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」。现在想要查询该进程占用的内存大小。

通过进程的 status

[root@web3_u ~]# cat /proc/25282/statusName: php-cgiState: S (sleeping)Tgid: 25282Pid: 25282PPid: 27187TracerPid: 0Uid: 99 99 99 99Gid: 99 99 99 99Utrace: 0FDSize: 256Groups: 99VmPeak: 496388 kBVmSize: 438284 kBVmLck: 0 kBVmHWM: 125468 kBVmRSS: 113612 kBVmData: 92588 kBVmStk: 100 kBVmExe: 6736 kBVmLib: 18760 kBVmPTE: 528 kBVmSwap: 0 kBThreads: 1SigQ: 0/46155SigPnd: 0000000000000000ShdPnd: 0000000000000000SigBlk: 0000000000000000SigIgn: 0000000000001000SigCgt: 0000000184000004CapInh: 0000000000000000CapPrm: 0000000000000000CapEff: 0000000000000000CapBnd: ffffffffffffffffCpus_allowed: fCpus_allowed_list: 0-3Mems_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/php-fpm.confAddress Kbytes RSS Dirty Mode Mapping0000000000400000 6736 2692 0 r-x-- php-cgi0000000000c93000 264 196 120 rw--- php-cgi0000000000cd5000 60 48 48 rw--- [ anon ]. . .00007fd6226bc000 4 4 4 rw--- ld-2.12.so00007fd6226bd000 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 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 TIME+ COMMAND25282 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:进程的IDUSER:进程所有者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+ 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 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

基本相同。

[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 命令

第一种方法

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

参数解析:

  1. -e 显示所有进程
  2. -o 定制显示信息
  3. pid 进程ID
  4. comm 进程名
  5. args 启动命令
  6. pcpu 占用CPU 百分比
  7. rsz 占用物理内存大小
  8. vsz 占用虚拟内存大小
  9. stime 进程启动时间
  10. 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 php-cgi

输出参数介绍

  1. PID:进程的ID
  2. USER:进程所有者
  3. VIRT:进程占用的虚拟内存
  4. RES:进程占用的物理内存
  5. SHR:进程使用的共享内存
  6. S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
  7. %CPU:进程占用CPU的使用率
  8. %MEM:进程使用的物理内存和总内存的百分比
  9. TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。

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

以上就是"Linux下怎么快速查找内存占用过高进程"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

进程 内存 物理 命令 排序 输出 时间 大小 方法 状态 用户 百分 百分比 知识 篇文章 信息 结果 一致 使用率 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州工业屏软件开发公司 党史数据库设计 数据库找不到本地服务器 一个公司的服务器有多大 数据库引擎删除数据库 数据库中货币型可以排序吗 主机能否直接和dns服务器通信 金融科技就是通过互联网 网络安全硬件管理规定 opc服务器软件怎么用 网络安全防护措施常见问题 网络安全培训机构运营 珠海中谷软件开发公司 软件开发在新西兰的工资 河南网络安全审计硬件设备 360网络安全市场营销方案 网络安全等级测评要多少钱 java软件开发培训 浦东新区网络技术服务价格表 吉林世纪风互联网科技 佛山有招聘软件开发的吗 数据库找不到本地服务器 我的世界密室杀手服务器在哪里玩 怎么用服务器提升效率 网络安全审计系统工作原理 怎么做软件开发产品经理 网络安全知识及注意事项 ncaa网络安全 郑州雷霆网络技术有限公司 宝安一对一学软件开发
0