不再使用但仍分配的内存

不再使用但仍分配的内存

我的记忆发生了一些奇怪的事情。

我有 Ubuntu 14.04 服务器和 Zimbra 8.6,内核(对于这个)是 3.13.0-37-generic。但我已经看到其他内核的问题。

内存和交换空间已满:

$ free
             total       used       free     shared    buffers     cached
Mem:       6112624    5991208     121416         88       4752      79224
-/+ buffers/cache:    5907232     205392
Swap:      3905532    3624768     280764

我以为 Zimbra 正在吃掉我所有的记忆,但奇怪的是,事实似乎并非如此:

# ps -A --sort -rss -o comm,pmem | head -n 11
COMMAND         %MEM
java            10.6
clamd            4.7
mysqld           3.0
java             2.0
slapd            1.2
/opt/zimbra/ama  1.1
/opt/zimbra/ama  1.0
/opt/zimbra/ama  1.0
/opt/zimbra/ama  1.0
/opt/zimbra/ama  0.9

我所有的过程都占用了一半的内存。我的缓冲区和缓存几乎不占用任何东西。

当我停止 Zimbra 时,仍然有 3.5Gb 被占用:

# ps -A --sort -rss -o comm,pmem | head -n 12
COMMAND         %MEM
bash             0.0
bash             0.0
bash             0.0
sudo             0.0
rsyslogd         0.0
http             0.0
http             0.0
htop             0.0
init             0.0
ps               0.0

重新启动后,使用的内存不足 200Mb。

服务器运行了 139 天,内存使用量每天都在一点点增长。

那么我的问题是:什么会占用所有内存?

编辑1,添加一些信息:

$ ls -l /dev/shm
lrwxrwxrwx 1 root root 8 mai    2 12:46 /dev/shm -> /run/shm

$ ipcs 
------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    


$ df 
Filesystem                  1K-blocks     Used Available Use% Mounted on
udev                 3051744         4    3051740   1% /dev
tmpfs                 611260       496     610764   1% /run
/dev/sda2           14287344   2765996   10772548  21% /
none                       4         0          4   0% /sys/fs/cgroup
none                    5120         0       5120   0% /run/lock
none                 3056288         0    3056288   0% /run/shm
none                  102400         0     102400   0% /run/user

重新启动后,(Zimbra 启动):

$ free
             total       used       free     shared    buffers     cached
Mem:       6112576    5712908     399668        832     237892    1829424
-/+ buffers/cache:    3645592    2466984
Swap:      3905532          0    3905532

RAM 的一些图表(我在 12:30 左右重新启动了服务器):

内存使用情况

第二张图显示了以下结果:

ps aux |awk '{s+=$4} END {print s}'

第三,结果:

smem -tw |grep -v Area | sed 's/ //;s/ //'

答案1

缓存。

很好的总结在http://www.linuxatemyram.com/

Linux 借用未使用的内存进行磁盘缓存。这会让您看起来内存不足,但事实并非如此!一切安好!

要清除缓存,请以 root 身份使用此命令,然后观察结果的内存使用情况。

echo 3 > /proc/sys/vm/drop_caches

相关内容