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

Не удается найти процесс, использующий четверть памяти

Я использую небольшой vServer с Debian 9 (stretch) и 2 ГБ ОЗУ.

В течение нескольких месяцев мне почему-то не хватает около 500 МБ ОЗУ, и я не могу понять, как они используются.

Когда я бегу free -h

              total     used      free    shared  buff/cache     available
Mem:           2.0G     1.0G      482M       66M        511M     764M
Swap:          1.0G       0B      1.0G

Я вижу, что используется половина памяти, около четверти используется для кешей, которые можно освободить, если это необходимо, а остальное - бесплатно.

Но когда я сейчас проверяю свои запущенные процессы, я могу обнаружить, что моими процессами используется только около 500 МБ.

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                   
 1458 mysql     20   0  927516 359260      0 S   0.0 17.5 108:31.26 mysqld                                                                                                    
  877 seafile   20   0  258032  94644   4876 S   0.0  4.6   0:22.92 python2.7                                                                                                 
  460 seafile   20   0  237156  85504   8036 S   0.0  4.2   0:13.14 python2.7                                                                                                 
  463 seafile   20   0  233096  82236   8956 S   0.0  4.0   0:05.79 python2.7                                                                                                 
  875 seafile   20   0  244356  81644   5408 S   0.0  4.0   0:19.50 python2.7                                                                                                 
  461 seafile   20   0  232464  81032   8232 S   0.0  3.9   0:03.58 python2.7                                                                                                 
 4054 www-data  20   0  374264  54976  45128 S   0.0  2.7   0:07.58 php-fpm7.0                                                                                                
 4026 www-data  20   0  372652  54840  44408 S   0.0  2.7   0:10.36 php-fpm7.0                                                                                                
 1865 seafile   20   0 1704520  52828     16 S   0.0  2.6   3:45.10 seaf-server                                                                                               
 4021 www-data  20   0  370836  48880  40468 S   0.0  2.4   0:10.83 php-fpm7.0                                                                                                
 1975 seafile   20   0  129128  47156   1944 S   0.0  2.3   0:02.06 python2.7                                                                                                 
21106 netdata   20   0  189412  36600   2660 S   0.3  1.8  16:07.50 netdata                                                                                                   
 1604 lukas     20   0  107132  34860   2736 S   0.0  1.7   2:07.91 gunicorn

Я понятия не имею, где находятся оставшиеся 500 МБ памяти.

Я подозревал ядро, но работает slabtop показывает, что он использует только около 80 МБ.

 Active / Total Size (% used)       : 76599.41K / 79594.40K (96.2%)

Я бегаю netdata на моем сервере, который показывает хороший обзор использования памяти для каждой категории и действительно показывает мои недостающие 530 МБ. Я поигрался с группировкой и создал новую группу под названием testing со следующей конфигурацией, которая включает мою недостающую память (в /etc/netdata/apps_groups.conf)

testing: systemd*

Почему systemd (или что-то, что netdata классифицирует как systemd) использует около четверти моей памяти? После перезагрузки он использует только 50 МБ, но через некоторое время он всегда использует около 500 МБ.

systemd - это процесс с pid 1. Все остальные процессы являются дочерними по отношению к systemd.

В netdata все процессы, не соответствующие указанным группам, относятся к категории other.

Поскольку netdata назначает процессы группам, соблюдая их иерархию, совпадение systemd* просто переместил большинство процессов из other к testing. Так systemd* не очень полезный матч.

На вашем месте я бы попытался понять, какие приложения работает на сервере, и добавить группы для этих конкретных приложений.

Дополнительно вы можете включить диаграммы systemd в netdata. Это позволит вам увидеть Services раздел в netdata. В зависимости от версии debian может потребоваться перезагрузка, чтобы включить для них отчет о памяти (вам может потребоваться добавить параметр загрузки ядра - проверьте вики).