日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/20 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux下找出吃内存的方法总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

linux下查詢進程占用的內存方法總結,假設現在有一個「php-cgi」的進程 ,進程id為「25282」。現在想要查詢該進程占用的內存大小。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

關鍵信息點

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

?

輸出列信息

  • 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?cachedPID?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下找出吃内存的方法总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。