防止 Ubuntu RAM 快速增加?

防止 Ubuntu RAM 快速增加?

我的服务器上安装了 ubuntu server 14.04。并且我有 vsftpd 服务器,用于测试目的,提供下载文件测试。我的问题是,为什么如果客户端下载 ftp 文件,我的服务器内存会随着用户下载而快速增加,然后在用户完成下载后,它保持相同的值,有什么方法可以阻止它?

以下是我的内存使用情况。

ipeph@ServiceOperationCenter:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          9748       6018       3720         10        141       5679
-/+ buffers/cache:        392       9354
Swap:          893          0        893

ipeph@ServiceOperationCenter:~$ date
Thu Nov 19 09:44:37 WIB 2015

ipeph@ServiceOperationCenter:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          9748       6113       3619         10        141       5679
-/+ buffers/cache:        395       9350
Swap:          893          0        893

ipeph@ServiceOperationCenter:~$ date
Thu Nov 19 09:44:57 WIB 2015

ipeph@ServiceOperationCenter:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          9748       6213       3534         10        141       5679
-/+ buffers/cache:        402       9355
Swap:          893          0        893

ipeph@ServiceOperationCenter:~$ date
Thu Nov 19 09:45:03 WIB 2015

答案1

Linux 内核会将文件数据缓存在内存中,以防再次访问。随着时间的推移,如果未访问数据或其他进程需要内存,数据将被丢弃。缓存统计数据显示缓存中有多少数据。我不会过分担心这一点。

如果您确实想删除缓存数据(这是不可取的,因为您可能会释放缓存数据,因此内核将不得不再次重新读取它),您可以将 1 写入 /proc/sys/vm/drop_caches 以释放页面缓存。

释放页面缓存:

echo 1 | sudo tee /proc/sys/vm/drop_caches

释放可回收的 slab 对象(包括 dentry 和 inode):

echo 2 | sudo tee /proc/sys/vm/drop_caches

释放 slab 对象和页面缓存:

echo 3 | sudo tee /proc/sys/vm/drop_caches

答案2

free输出中,最重要的数字是+ buffers/cachefree + buffers + cached它表示您的应用程序在需要时可用的内存。

- buffers/cache== 已用 - 缓冲区 - 缓存,这是应用程序占用内存的良好指标

Linux(内核)利用未使用的内存作为页面缓存(和缓冲区缓存 - 它仍然存在)来提高性能。

free-> 不用于任何用途

echo 3 > /proc/sys/vm/drop_caches释放页面缓存、dentry 和 inode,这将使用于页面缓存/缓冲区缓存的内存返回到“空闲”状态。

buffers将会cached下降,free也会增加,但是,这并不意味着您有更多的内存可供应用程序使用。

如需了解更多信息,请查看Linux 在我的 RAM 中!

顺便说一句:Fedora 和 Arch Linux 的输出使用方式free不同procps-ng

输出结合了 buff/cache 并删除了有点令人困惑的-/+ buffers/cache

我们可以清楚地看到buff/cache删除了但available没有改变,这对最终用户来说更有意义。我个人认为这是一个更好的实现/解释。

# free -m
              total        used        free      shared  buff/cache   available
Mem:           1874         117          18           1        1737        1708
Swap:             0           0           0
# echo 3 > /proc/sys/vm/drop_caches
# free -m
              total        used        free      shared  buff/cache   available
Mem:           1874         117        1654           1         102        1708
Swap:             0   

相关内容