降低内存的使用,提高大文件传输效率

在 Ubuntu 系统下,通过 SMB 开启网络共享盘进行大文件传输时,内存占用过大可能是由于内核缓存导致的。解决该问题可以通过以下方式:

调整内核缓存大小
可以通过修改 /etc/sysctl.conf 文件中的参数值来调整内核缓存大小。可以通过以下命令打开该文件:

sudo gedit /etc/sysctl.conf

(稍微等个10-20秒会打开sysctl.conf)在该文件末尾添加以下内容:

限制内核缓存大小

vm.vfs_cache_pressure=50
vm.swappiness=10
其中,vm.vfs_cache_pressure 参数控制内核缓存释放的速度,其默认值为 100,调整为 50 可以降低内核缓存的使用;vm.swappiness 参数控制系统对交换分区的使用,其默认值为 60,调整为 10 可以减少内存压力。

修改完成后,使用以下命令使其生效:

sudo sysctl -p

调整 Samba 配置文件
可以通过修改 Samba 的配置文件来控制其对内存的使用。可以使用以下命令打开 Samba 的配置文件:

sudo nano /etc/samba/smb.conf
在该文件中添加以下内容:

bash
Copy code
[global]

禁用内存缓存

read raw = yes
write raw = yes
max xmit = 65535
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
其中,read raw 和 write raw 参数控制 Samba 是否使用内存缓存,其值为 yes 表示禁用;max xmit 参数控制数据包的最大传输大小,其值为 65535 可以提高传输效率;socket options 参数控制 Samba 的套接字选项,其值可以调整为减少内存压力。

修改完成后,使用以下命令重启 Samba 服务:

sudo service smbd restart
通过以上两种方式可以降低内存的使用,提高大文件传输效率。

我解决了网络共享盘传输过程占内存的问题,可以让传输过程一点内存也不占
如果你也遇到了同样的问题,可以参考我的解决方案
妈妈再也不用担心我的内存爆炸了