空閒的 AWS EC2 但記憶體使用率很高
我正在使用 Amazon EC2 實例**C4.large**,總共 3.75G 記憶體,執行 Amazon-Linux-2015-09-HVM
記憶體使用量每天都在增加,就像記憶體洩漏一樣。然後我殺死了我所有的程序和所有的記憶體佔用程序,比如
Nginx/PHP-FPM/Redis/MySQL/sendmail
. 很奇怪記憶體沒有釋放,還是很高。該行-/+ buffers/cache: 3070 696
表示不包括緩衝區/記憶體的實際可用記憶體:$ free -m total used free shared buffers cached Mem: 3767 3412 354 4 138 203 -/+ buffers/cache: 3070 696 Swap: 0 0 0
可以看到 kill 後只有幾個使用者程序在執行,最高只有 0.1% 的記憶體使用:
$ ps aux --sort=-resident|head -30 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 32397 0.0 0.1 114232 6672 ? Ss 08:04 0:00 sshd: ec2-user [priv] ec2-user 32399 0.0 0.1 114232 4032 ? S 08:04 0:00 sshd: ec2-user@pts/0 ntp 2329 0.0 0.1 23788 4020 ? Ss Dec06 0:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g ec2-user 32400 0.0 0.0 113572 3368 pts/0 Ss 08:04 0:00 -bash rpcuser 2137 0.0 0.0 39828 3148 ? Ss Dec06 0:00 rpc.statd root 2303 0.0 0.0 76324 2944 ? Ss Dec06 0:00 /usr/sbin/sshd root 2089 0.0 0.0 247360 2676 ? Sl Dec06 0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5 root 1545 0.0 0.0 11364 2556 ? Ss Dec06 0:00 /sbin/udevd -d root 1 0.0 0.0 19620 2540 ? Ss Dec06 0:00 /sbin/init ec2-user 1228 0.0 0.0 117152 2480 pts/0 R+ 10:32 0:00 ps aux --sort=-resident root 2030 0.0 0.0 9336 2264 ? Ss Dec06 0:00 /sbin/dhclient -q -lf /var/lib/dhclient/dhclient-eth0.leases -pf /var/run/dhclient-eth0.pid eth0 rpc 2120 0.0 0.0 35260 2264 ? Ss Dec06 0:00 rpcbind root 2071 0.0 0.0 112040 2116 ? S<sl Dec06 0:00 auditd root 1667 0.0 0.0 11308 2064 ? S Dec06 0:00 /sbin/udevd -d root 1668 0.0 0.0 11308 2040 ? S Dec06 0:00 /sbin/udevd -d root 2373 0.0 0.0 117608 2000 ? Ss Dec06 0:00 crond ec2-user 1229 0.0 0.0 107912 1784 pts/0 S+ 10:32 0:00 head -30 root 2100 0.0 0.0 13716 1624 ? Ss Dec06 0:09 irqbalance --pid=/var/run/irqbalance.pid root 2432 0.0 0.0 4552 1580 ttyS0 Ss+ Dec06 0:00 /sbin/agetty ttyS0 9600 vt100-nav root 2446 0.0 0.0 4316 1484 tty6 Ss+ Dec06 0:00 /sbin/mingetty /dev/tty6 root 2439 0.0 0.0 4316 1464 tty3 Ss+ Dec06 0:00 /sbin/mingetty /dev/tty3 root 2437 0.0 0.0 4316 1424 tty2 Ss+ Dec06 0:00 /sbin/mingetty /dev/tty2 root 2444 0.0 0.0 4316 1416 tty5 Ss+ Dec06 0:00 /sbin/mingetty /dev/tty5 root 2434 0.0 0.0 4316 1388 tty1 Ss+ Dec06 0:00 /sbin/mingetty /dev/tty1 root 2441 0.0 0.0 4316 1388 tty4 Ss+ Dec06 0:00 /sbin/mingetty /dev/tty4 dbus 2160 0.0 0.0 21768 232 ? Ss Dec06 0:00 dbus-daemon --system root 2383 0.0 0.0 15372 144 ? Ss Dec06 0:00 /usr/sbin/atd root 2106 0.0 0.0 4384 88 ? Ss Dec06 0:16 rngd --no-tpm=1 --quiet root 2 0.0 0.0 0 0 ? S Dec06 0:00 [kthreadd]
沒有程序使用高記憶體,但係統總空閒只有3.75G中的696M,是EC2還是Amazon Linux的錯誤?我有另一個**T2.micro**實例正在執行,在 kill
Nginx/MySQL/PHP-FPM
記憶體被釋放並且空閒數量增加之後。如果有人可以提供幫助,我們將不勝感激。
我沒有方便的 C4.large 實例來檢查我的理論,所以我可能在黑暗中拍攝,但是你檢查過 Xen 氣球驅動器的統計數據嗎?
這是對可能機制的戲劇性解釋:http: //lowendbox.com/blog/how-to-tell-your-xen-vps-is-oversales-memory/
以下是各種 sysfs 路徑的文件,可為您提供更多資訊:https ://www.kernel.org/doc/Documentation/ABI/stable/sysfs-devices-system-xen_memory
我認為這個連結很好地描述了你看到的“問題”
結果,Linux 只是使用盡可能多的記憶體作為磁碟記憶體。顯然,這使磁碟訪問更快。
程序需要 RAM 的那一刻(例如 nginx)然後 RAM 將從記憶體職責中“釋放”,並分配給您執行的任何程序。