Высокое использование памяти на сервере Linux
У меня есть сервер LAMP со следующей конфигурацией.
Процессор: Intel(R) Xeon(R) CPU
Оперативная память: 32 ГБ
HDD: 80 ГБ
Работает в виртуальной среде.
Все вещи на сервере работают без сбоев. Но я заметил, что использование оперативной памяти сервером увеличивается с каждым днем без какой-либо причины.
Это текущее использование памяти на моем сервере.
# free -g
total used free shared buffers cached
Mem: 31 13 17 0 0 10
-/+ buffers/cache: 1 29
Swap: 2 0 2
И вы можете увидеть использование памяти за последние 8 недель ниже.
И я выполнил следующую команду, чтобы узнать, сколько памяти потребляет каждый процесс.
# ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }'
0.00 Mb COMMAND
2253.62 Mb /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock
1171.66 Mb java -jar /etc/vmagent/bin/VMAgent.jar
138.27 Mb /sbin/audispd
127.75 Mb /usr/sbin/named -u named -c /etc/named.conf -u named -t /var/named/run-root
74.29 Mb auditd
73.03 Mb automount
43.14 Mb /usr/bin/spamd --username=popuser --daemonize --nouser-config --helper-home-dir=/var/qmail --max-children 5 --create-prefs --virtual-config-dir=/var/qmail/mailnames/%d/%l/.spamassassin --pidfile=/var/run/spamd/spamd_full.pid --socketpath=/tmp/spamd_full.sock
43.14 Mb spamd child
43.14 Mb spamd child
37.13 Mb /usr/sbin/httpd
37.02 Mb /usr/sbin/httpd
36.52 Mb /usr/sbin/httpd
36.46 Mb /usr/sbin/httpd
36.23 Mb /usr/sbin/httpd ................
Для устранения неполадок я перезапустил серверы MySQL и APACHE. Но результат был таким же. Перезапуск всего сервера решит проблему, но я хочу знать, какова реальная проблема.
Дайте мне знать, если у вас есть идеи по этому вопросу.
Спасибо,
Арун С
3 ответа
-/+ buffers/cache: 1
Вы используете только 1 ГБ. Остальное - системный кеш.
Это совершенно нормально. Если вы хотите, чтобы память не использовалась, выньте ее с сервера и положите на стол. Свободная память тратится впустую.
Linux, как и большинство современных операционных систем, может напрямую переводить память из одного использования в другое. Освобождение его в середине связано с затратами, связанными с этим, и без каких-либо преимуществ. Так что разумные операционные системы не делают этого, если не обязаны.
Свободная память нужна только для определенных случаев. Например, свободная память необходима для временного хранения данных, полученных по сети, до тех пор, пока ОС не сможет их обработать. Поскольку свободная память связана с высокой стоимостью (как если бы этой памяти не было с точки зрения производительности), система сохраняет столько памяти, сколько ей необходимо в этих особых ситуациях.