我有一个家用 Ubuntu 服务器,用于存储。我在笔记本电脑上安装了一个 sftp 共享来访问我的服务器,但与我通常通过 Bittorrent 下载时的速度(~800kb/s)相比,我的上传速度非常慢(~400kb/s)。这有点奇怪……我在 LAN 上的速度应该比在 Internet 上更快……
我怎样才能加快服务器的上传速度以及如何排除瓶颈?
答案1
传输速度受到三个因素的阻碍。带宽、协议和磁盘速度。
带宽
这似乎并不是真正的问题 - 正如您所提到的,您在 LAN 上 - 理想情况下,LAN 上不会出现太多问题,除非其他用户占用网络带宽或接收效果较差(无论是 WIFI 还是长距离电缆)。
协议
这就是更多开销发挥作用的地方。您比较了 Bittorrent 和 SFTP 的速度 - 这些协议截然不同。Bittorrent 是一种高度压缩、多线程、多种子(多对等)文件传输协议。SFTP 是 FTP超过SSH 可能会增加一些开销,尤其是与带宽问题。
磁盘
硬盘是人们谈论下载或上传速度时最不考虑的因素。但是,您只能以硬盘旋转的速度保存(和写入)数据(除非您使用 SSD(固态硬盘),在这种情况下这与您无关)。
我注意到您提到过,您可以从 Bittorrent 下载到笔记本电脑,但服务器上行链路速度较差。您是否尝试过从互联网到家庭服务器进行速度测试?这应该可以帮助您对从“互联网”到服务器的速度进行基准测试。其次,请确保在运行这些测试时网络上没有任何其他主要流量(例如打开 Bittorrent),因为这会产生无效结果。
答案2
您使用的网络设备的功能很可能限制了您的速度。请记住,如果有两个设备,传输(上行或下行)将限制在速度最慢的系统上。
您可以查看ethtool命令(来自 ethtool 包)用于查看您所使用的系统和接口的当前关联状态和速度。NetworkManager 还会在“连接信息”中显示该信息...
为了加快传输速度,您还可以选择禁用压缩、禁用加密或对 ssh/sftp 进行任何此类调整,以尝试减少网络以外目的的 CPU 使用,从而加快传输速度。
答案3
SSH(以及 SCP、SFTP)可能非常耗费 CPU。检查客户端或服务器的 CPU 使用率。如果接近 100%,则这可能是瓶颈的主要来源。
您可以尝试使用 FTP 或 rsync 来比较结果,它们不会对文件传输使用加密。