找不到使用四分之一内存的进程

找不到使用四分之一内存的进程

我正在运行一个带有 Debian 9(stretch)和 2GB RAM 的小型 vServer。

几个月来,我不知为何丢失了大约 500MB 的 RAM,而且我不知道它们是如何使用的。

当我跑步时free -h

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

我可以看到一半的内存已被使用,大约四分之一用于缓存(如果需要可以释放),其余的都是免费的。

但是当我现在检查我正在运行的进程时,我发现我的进程只使用了大约 500MB。

  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

我不知道剩下的 500MB 内存在哪儿。

我怀疑是内核,但运行slabtop显示它只使用了大约 80MB。

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

我在跑步网络数据在我的服务器上,它显示了每个类别的内存使用情况的概览,确实显示了我丢失的 530MB。我尝试了分组,并创建了一个名为的新组,testing其配置如下,它包括我丢失的内存(在 中/etc/netdata/apps_groups.conf

testing: systemd*

网络数据

为什么 systemd(或 netdata 归类为 systemd 的东西)占用了我大约四分之一的内存?重启后它只使用了 50MB,但一段时间后它总是使用大约 500MB。

答案1

systemd 是 pid 为 1 的进程。所有其他进程都是 systemd 的子进程。

在 netdata 中,所有与给定组不匹配的进程都被分配到类别other

由于 netdata 按照进程的层次结构将进程分配到组中,因此匹配systemd*只是将大多数进程从 移动othertesting。因此,systemd*匹配并不是真正有用的。

如果我是你,我会尝试了解服务器运行哪些应用程序并为这些特定的应用程序添加组。

此外,您还可以在 netdata 中启用 systemd 图表。这将允许您查看Servicesnetdata 中的部分。根据 debian 版本,可能需要重新启动才能为其启用内存报告(您可能需要添加内核启动参数 - 请查看 wiki)。

相关内容