CentOS查询进程占用的内存
时间:2017-04-13 11:54 来源:blog.csdn.net 作者:IT
1. ps aux命令
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
lizhibin 32986 0.0 13.8 916276 534748 ? Ssl 10:12 0:00 /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php
lizhibin 32988 0.0 13.8 768812 534272 ? S 10:12 0:00 /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php
lizhibin 32993 0.0 13.8 764704 534752 ? S 10:12 0:00 /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php
lizhibin 32994 0.0 13.8 764704 534752 ? S 10:12 0:00 /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php
lizhibin 32995 0.0 13.8 764704 534752 ? S 10:12 0:00 /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php
lizhibin 32996 0.0 13.8 764704 534752 ? S 10:12 0:00 /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php
VSZ:表示进程占用多少虚拟内存(kb)
RSS:表示进程占用多少物理内存(kb)
我们来简化一下命令:
ps aux | grep swoole | grep -v grep | awk -F ' ' '{print $5,$6}'
916276 534748
768812 534272
764704 534752
764704 534752
764704 534752
764704 534752
可以看到每个swoole的进程占用了月500+MB的物理内存。
2.使用pmap命令
pmap -d 32988
32988: /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php
Address Kbytes Mode Offset Device Mapping
0000000000400000 10272 r-x-- 0000000000000000 0fd:00000 php
0000000001007000 4 r---- 0000000000a07000 0fd:00000 php
0000000001008000 60 rw--- 0000000000a08000 0fd:00000 php
0000000001017000 140 rw--- 0000000000000000 000:00000 [ anon ]
0000000002a69000 301936 rw--- 0000000000000000 000:00000 [ anon ]
00007fcec91e4000 224380 rw--- 0000000000000000 000:00000 [ anon ]
命令输出第一行:执行程序以及参数。
Address: 内存开始地址
Kbytes: 占用内存的字节数(KB)
RSS: 保留内存的字节数(KB)
Dirty: 脏页的字节数(包括共享和私有的)(KB)
Mode: 内存的权限:read、write、execute、shared、private (写时复制)
Mapping: 占用内存的文件、或[anon](分配的内存)、或[stack](堆栈)
Offset: 文件偏移
Device: 设备名 (major:minor)
我们使用awk命令,计算Kbytes列的和
pmap -dq 32988 | awk -F ' ' 'BEGIN{sum=0}{sum+=$2}END{print sum}'
结果输出:768812KB,这个结果是ps命令中的虚拟内存大小。接下来过滤掉so的共享内存。
pmap -dq 32988 | awk -F ' ' 'BEGIN{sum=0}{if($6!~/\.so/)sum+=$2}END{print sum}'
结果输出:672284KB,和ps命令得出的物理内存数据不同。对命令进行调整:
pmap -dq 32988 | awk -F ' ' 'BEGIN{sum=0}{if($6~/\[/)sum+=$2}END{print sum}'
结果输出:539684KB,和ps命令得出的物理内存已经比较接近了。上面的命令,主要统计出进程[ anon ]、[ stack ]所占用的内存(堆栈)
(责任编辑:IT)
1. ps aux命令 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND lizhibin 32986 0.0 13.8 916276 534748 ? Ssl 10:12 0:00 /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php lizhibin 32988 0.0 13.8 768812 534272 ? S 10:12 0:00 /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php lizhibin 32993 0.0 13.8 764704 534752 ? S 10:12 0:00 /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php lizhibin 32994 0.0 13.8 764704 534752 ? S 10:12 0:00 /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php lizhibin 32995 0.0 13.8 764704 534752 ? S 10:12 0:00 /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php lizhibin 32996 0.0 13.8 764704 534752 ? S 10:12 0:00 /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php VSZ:表示进程占用多少虚拟内存(kb) RSS:表示进程占用多少物理内存(kb) 我们来简化一下命令: ps aux | grep swoole | grep -v grep | awk -F ' ' '{print $5,$6}' 916276 534748 768812 534272 764704 534752 764704 534752 764704 534752 764704 534752 可以看到每个swoole的进程占用了月500+MB的物理内存。 2.使用pmap命令 pmap -d 32988 32988: /usr/local/php_5.4.45/bin/php -c /usr/local/php_5.4.45/etc/php-swoole.ini /www/service.gamechat.37.com/server.php Address Kbytes Mode Offset Device Mapping 0000000000400000 10272 r-x-- 0000000000000000 0fd:00000 php 0000000001007000 4 r---- 0000000000a07000 0fd:00000 php 0000000001008000 60 rw--- 0000000000a08000 0fd:00000 php 0000000001017000 140 rw--- 0000000000000000 000:00000 [ anon ] 0000000002a69000 301936 rw--- 0000000000000000 000:00000 [ anon ] 00007fcec91e4000 224380 rw--- 0000000000000000 000:00000 [ anon ] 命令输出第一行:执行程序以及参数。 Address: 内存开始地址 Kbytes: 占用内存的字节数(KB) RSS: 保留内存的字节数(KB) Dirty: 脏页的字节数(包括共享和私有的)(KB) Mode: 内存的权限:read、write、execute、shared、private (写时复制) Mapping: 占用内存的文件、或[anon](分配的内存)、或[stack](堆栈) Offset: 文件偏移 Device: 设备名 (major:minor) 我们使用awk命令,计算Kbytes列的和 pmap -dq 32988 | awk -F ' ' 'BEGIN{sum=0}{sum+=$2}END{print sum}' 结果输出:768812KB,这个结果是ps命令中的虚拟内存大小。接下来过滤掉so的共享内存。 pmap -dq 32988 | awk -F ' ' 'BEGIN{sum=0}{if($6!~/\.so/)sum+=$2}END{print sum}' 结果输出:672284KB,和ps命令得出的物理内存数据不同。对命令进行调整: pmap -dq 32988 | awk -F ' ' 'BEGIN{sum=0}{if($6~/\[/)sum+=$2}END{print sum}' 结果输出:539684KB,和ps命令得出的物理内存已经比较接近了。上面的命令,主要统计出进程[ anon ]、[ stack ]所占用的内存(堆栈) (责任编辑:IT) |