我使用 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_caches
buff/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下载文件,结果是一样的。