Высокое использование памяти на сервере 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, как и большинство современных операционных систем, может напрямую переводить память из одного использования в другое. Освобождение его в середине связано с затратами, связанными с этим, и без каких-либо преимуществ. Так что разумные операционные системы не делают этого, если не обязаны.

Свободная память нужна только для определенных случаев. Например, свободная память необходима для временного хранения данных, полученных по сети, до тех пор, пока ОС не сможет их обработать. Поскольку свободная память связана с высокой стоимостью (как если бы этой памяти не было с точки зрения производительности), система сохраняет столько памяти, сколько ей необходимо в этих особых ситуациях.

Другие вопросы по тегам