为什么Linux使用的内存不断增长?

为什么Linux使用的内存不断增长?

我使用 Rocky8.5 Linux,当我开始通过 SCP 传输巨大文件时,我遇到了使用内存大小不断增加的情况!

以下是场景,我在数据中心 A 中有一个 ESXi,在数据中心 B 中有一个虚拟机。为了访问 ESXi,我必须建立 IPSec 隧道。隧道已建成并准备就绪。我有一个 350GB 的文件想要复制到远程虚拟机。目前我拥有的唯一工具就是 SCP。其他工具(例如 Rsync 或 FTP)既不可用也不适合当前拓扑。

当我开始使用 SCP 传输数据时,使用的内存开始增加:

[root@gateway]# free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       1.4Gi        11Gi        16Mi       2.5Gi        13Gi
Swap:         4.0Gi          0B       4.0Gi

与此同时,buff/缓存正在增加,我认为这是正常的。当我运行sync; echo 3 > /proc/sys/vm/drop_cachesbuff/cache 收缩时:

[root@gateway]# free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       1.4Gi        13Gi        16Mi       119Mi        13Gi
Swap:         4.0Gi          0B       4.0Gi

但使用的内存大小保持不变。我在下载 60~70GB 的文件后遇到虚拟机崩溃的情况。

有人有什么建议吗?

更新#1 我有一个正在运行的副本,如您所见,其buff/cache值为2.8吉当我删除缓存时,它会返回到自由的,但值用过的没有改变:

[root@gateway]# free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       1.6Gi        11Gi        16Mi       2.8Gi        13Gi
Swap:         4.0Gi          0B       4.0Gi
[root@gateway]# sync; echo 3 > /proc/sys/vm/drop_caches 
[root@gateway]# free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       1.6Gi        13Gi        16Mi       127Mi        13Gi
Swap:         4.0Gi          0B       4.0Gi
[root@gateway]# 

更新#2 看起来这是SSH的内存泄漏,我改用sftp下载文件,结果是一样的。

相关内容