Ubuntu 16.04 — 没有正确报告内存使用情况?

Ubuntu 16.04 — 没有正确报告内存使用情况?

我以为我已经掌握了 Linux 中的内存,但是这个问题让我对自己产生了怀疑。

我有一台运行 Proxmox 5.4-13 的服务器,上面有一个运行 Ubuntu 16.04 的容器。此容器运行各种进程,包括 Apache、PHP-FPM、Memcached、Redis 以及带有无头 Chrome 的 Puppeteer。该容器已分配大约 100Gb 的 RAM。

似乎自从我们开始更多地使用 Puppeteer/headless chrome 以来,我们就看到了某种内存泄漏 - 或者至少内存被用完了,然后没有被内核释放?这可能只是巧合。服务器使用的内存慢慢增长。我无法确定是什么在使用内存。停止或终止服务不会考虑使用的内存。重新启动容器会使一切恢复正常,然后在几周的时间内再次缓慢增长。

在撰写本文时,已使用近 30Gb 的内存(自上次重启以来已过去一周)。

$ free -m
             total        used        free      shared  buff/cache    available
Mem:         102400       28128       63454        2562       10817       74271

如果我运行 ps_mem (https://github.com/pixelb/ps_mem) 则返回我的进程总共使用了 5.2Gb。运行 top/htop 不会显示哪些进程正在使用内存。

 Private  +   Shared  =  RAM used       Program

292.0 KiB +  66.5 KiB = 358.5 KiB       autossh (3)
468.0 KiB + 104.5 KiB = 572.5 KiB       su
432.0 KiB + 160.5 KiB = 592.5 KiB       agetty (3)
528.0 KiB + 222.0 KiB = 750.0 KiB       sh (6)
516.0 KiB + 354.5 KiB = 870.5 KiB       master
484.0 KiB + 390.5 KiB = 874.5 KiB       pickup
856.0 KiB +  46.5 KiB = 902.5 KiB       systemd-logind
572.0 KiB + 360.5 KiB = 932.5 KiB       qmgr
852.0 KiB + 267.5 KiB =   1.1 MiB       dbus-daemon
816.0 KiB + 308.5 KiB =   1.1 MiB       cron (3)
  1.3 MiB +  95.5 KiB =   1.4 MiB       ntpd
940.0 KiB + 619.0 KiB =   1.5 MiB       sudo (2)
  1.4 MiB + 164.5 KiB =   1.5 MiB       pgbouncer
  1.8 MiB + 168.5 KiB =   2.0 MiB       atop
  1.0 MiB +   1.0 MiB =   2.1 MiB       polkitd
  2.1 MiB +  25.5 KiB =   2.1 MiB       rsyslogd
  1.2 MiB +   1.0 MiB =   2.2 MiB       accounts-daemon
  2.1 MiB + 426.5 KiB =   2.6 MiB       smtpd
  2.1 MiB + 635.0 KiB =   2.7 MiB       (sd-pam) (2)
  2.7 MiB + 317.0 KiB =   3.0 MiB       sftp-server (14)
  1.7 MiB +   1.3 MiB =   3.0 MiB       zabbix_agentd (6)
  2.1 MiB +   2.1 MiB =   4.2 MiB       systemd (3)
  6.0 MiB + 880.5 KiB =   6.8 MiB       ssh (3)
  7.1 MiB +   1.2 MiB =   8.2 MiB       bash (4)
  3.9 MiB +   7.5 MiB =  11.5 MiB       sshd (15)
 13.0 MiB + 846.5 KiB =  13.8 MiB       unattended-upgr
 13.4 MiB +   1.1 MiB =  14.5 MiB       supervisord
 62.4 MiB +  20.5 KiB =  62.4 MiB       redis-server
 22.9 MiB +  57.0 MiB =  79.9 MiB       systemd-journald
 77.2 MiB +  24.4 MiB = 101.5 MiB       apache2 (5)
102.5 MiB +   9.2 MiB = 111.6 MiB       php7.3 (5)
111.6 MiB +  34.3 MiB = 145.9 MiB       phantomjs (4)
521.2 MiB + 148.5 KiB = 521.4 MiB       memcached
  4.1 GiB +  69.9 MiB =   4.2 GiB       php-fpm7.3 (20)
---------------------------------
                          5.2 GiB
=================================

我如何确定什么正在使用内存?

编辑1:

$ mount | grep tmpfs
none on /dev type tmpfs (rw,relatime,size=492k,mode=755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
tmpfs on /run/user/33 type tmpfs (rw,nosuid,nodev,relatime,size=13191772k,mode=700,uid=33,gid=33)
tmpfs on /run/user/2001 type tmpfs (rw,nosuid,nodev,relatime,size=13191772k,mode=700,uid=2001,gid=2001)

相关内容