Назад | Перейти на главную страницу

AWS EC2 в режиме ожидания, но много памяти

Я использую инстанс Amazon EC2 C4. Большой, всего 3,75 ГБ памяти, работает 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]

Ни один процесс не использует верхнюю память, но общая свободная память системы составляет всего 696 МБ из 3,75 ГБ, это ошибка EC2 или Amazon Linux? у меня есть другой T2.micro экземпляр запущен, после убийства Nginx/MySQL/PHP-FPM память высвобождается, а свободный номер выталкивается. Приветствуется, если кто-то может помочь.

Вам нужно будет определить, какие конкретные процессы и команды его используют.

Вы можете заглянуть в раздел памяти Вот

Начните с этой команды

ps aux --sort=-resident|head -11

Думаю, эта ссылка очень хорошо описывает "проблему", которую вы видите.

http://www.linuxatemyram.com/

В результате Linux просто использует как можно больше памяти в качестве дискового кеша. Очевидно, это ускоряет доступ к диску.

В тот момент, когда ОЗУ требуется программе (например, nginx), ОЗУ будет «освобождено» от функций кэширования и вместо этого будет выделено любой программе, которую вы запускаете.

У меня нет под рукой экземпляра C4.large, чтобы проверить мою теорию, поэтому я могу стрелять в темноте, но вы проверяли статистику для водителя воздушного шара Xen?

Вот драматическое объяснение возможного механизма: http://lowendbox.com/blog/how-to-tell-your-xen-vps-is-overselling-memory/

А вот документация по различным путям sysfs, которая даст вам больше информации: https://www.kernel.org/doc/Documentation/ABI/stable/sysfs-devices-system-xen_memory