题 为什么scp比http慢得多?


我在Amazon EC2上有一个实例,它拥有一个大型文件(~180MB)。我需要将该文件复制到我的本地机器,所以很自然地我尝试了 scp。尝试多次后,只获得20-30kb / s的最大速度并断开连接(只有一次我达到~200KB / s一会儿,但随后连接掉线),我尝试了HTTP。通过HTTP,我得到1MB / s,它达到2MB / s,在两分钟内完成转移。超过scp,ETA大约需要三个小时。

我知道 scp 由于加密速度比HTTP慢,但我不认为仅此一项可能会导致性能下降约30倍。所以我猜测有一些限制,可能在我的ISP。我能肯定找到任何方式吗?还是有其他原因吗?


5
2018-01-19 10:58




scp如何上传到实例的速度? - MDMoore313


答案:


网络限制的典型签名是接近恒定的速度(在10-20KB / s左右),因此如果您受到限制,这是一种需要寻找的模式。另一种模式是“聚集”或“突发”,您可以获得一到两秒的高速连接,然后是一段时间的低速连接。如果是这种情况,您的问题在某些时候更可能是缓冲/缓存。

通常,您的ISP的上游路由设备将配置为QoS HTTP(或更具体地,端口80)流量,其优先级高于所有其他流量,其中大多数客户将浏览网络(并非完全不正确)视图,并且他们不希望别人的SCP / FTP / Skype /点对点流量阻塞他们的管道。

亚马逊本身不会对他们的实例应用任何QoS(我知道)。也就是说,您可能遇到CPU限制的问题,特别是如果您正在运行具有低功耗(或低优先级)CPU资源的t1.micro(或其他小型)EC2实例。检查你的CPU窃取百分比(运行 top 并检查右上角的%st值,看看你的CPU是否被其他EC2实例“窃取” - 这通常是低使用率实例的情况 - CPU窃取允许Amazon从休眠/空闲中回收CPU周期满足需求的实例。


4
2018-01-19 15:41



我的实例是一个大(或xlarge,不记得),所以我不认为处理能力是这里的问题。有一点需要注意,我正在跑步 sshd 在非标准端口(即不是22)上,所以它可能在某处通过某种QoS给予最低优先级。 - Felix


SSHD有一些与安全性和TCP卡住有关的开销。这就是为什么你可以使用scp-hpn补丁更慢,它更快!你可以看到更多 http://www.psc.edu/index.php/hpn-ssh


1
2018-01-19 18:40





它可能是您的ISP或亚马逊进行限制。对于亚马逊来说,应用高度偏好HTTP的QoS是有意义的,因为这将是他们最常见的用例。

您可以使用netcat通过每个端口发送流量进行测试。您还可以重新配置SCP(sshd)以在端口80上运行,并查看您获得的速度(反之亦然,重新配置您的Web服务器以通过端口22运行)。


0
2018-01-19 11:54



肯定会有一些限制,我试图弄清楚它是我的ISP还是亚马逊。我不知道改变端口会如何帮助我做到这一点。这仍然是一个有趣的实验,所以我会去做。 - Felix
@Felix一些ISP只限制某些端口,因为在某些情况下他们无法直接查看@sh或其他类型的流量,但流量有众所周知的端口。 SSH通常是一个文本shell,并且可以在拨号连接上正常运行,因此在大多数情况下,限制该端口的速度不会引起怀疑。 - MDMoore313
我的评论是要弄清楚是否正在进行限制/ QoS预测,而不是弄清楚是谁在做这件事。对于后者,您必须通过不同的Internet连接尝试相同的测试。 - jjv