CentOS查詢進程佔用的記憶體
1. ps aux命令USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDlizhibin 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.phplizhibin 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.phplizhibin 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.phplizhibin 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.phplizhibin 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.phplizhibin 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.phpVSZ:表示進程佔用多少虛擬記憶體(kb)RSS:表示進程佔用多少實體記憶體(kb)我們來簡化一下命令:ps aux | grep swoole | grep -v grep | awk -F ' ' '{print $5,$6}'916276 534748768812 534272764704 534752764704 534752764704 534752764704 534752可以看到每個swoole的進程佔用了月500+MB的實體記憶體。2.使用pmap命令pmap -d 3298832988: /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.phpAddress Kbytes Mode Offset Device Mapping0000000000400000 10272 r-x-- 0000000000000000 0fd:00000 php0000000001007000 4 r---- 0000000000a07000 0fd:00000 php0000000001008000 60 rw--- 0000000000a08000 0fd:00000 php0000000001017000 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 ]所佔用的記憶體(堆棧)