小编Set*_*eth的帖子

Ruby和Net :: SCP传输(套接字)的性能问题

从命令行scp实用程序的功能来看,SCP上传速度似乎在库中受到很大限制.我知道这是Ruby(1.9.2-p0),但Net :: SCP比Linux实用程序慢大约8倍(使用大文件看到......见下文).我很想知道(我快速查看代码)如果这是Ruby中的套接字,或者是否可以更好地复用Net :: SCP套接字?

我注意到无论我尝试什么样的上传方式(串行上传,异步操作,使用scp对象的多个实例)我都无法在SCP上传时获得超过9兆字节/秒的传输速度.现在......让我解释一下我调查的细节:

1)尝试了不同的加密算法

我使用了不同类型的加密而没有太大的速度变化示例:我可以使用命令行scp(加密算法= arcfour128)提交我的1GB测试文件,并在我的内部千兆位连接上获得73.3兆字节/秒的传输速率.我使用Net :: SCP.upload lib在我的内部千兆位连接上从未超过大约9兆字节/秒.

2)尝试了不同的主机/操作系统

我发现Linux - > Linux上传速度最快.SUA的ssh服务器(Windows)只能为我提供最高13.5兆字节/秒的上传速度(Linux - > Windows,使用arcfour算法w/scp命令行),而Linux - > Linux(使用arcfour,w/scp命令行) )是一个惊人的73.3兆字节/秒.我应该提一下,这些Windows和Linux机器完全相同的型号,硬件等.

3)尝试了不同的SCP上传方法

- >使用2同步上传!电话,一个接一个地完成. - >使用2个异步上传调用,一个接一个地启动 - >使用2个Net :: SCP对象并将文件提交到非阻塞/异步版本的上传(因此它们并行运行)这些不同的方法都没有给予任何显着的性能提升,这有点令人沮丧.

以下是测试结果(为便于阅读而增强了文本,但与提供的代码输出类似):


Net::SCP
Done creating channels
Starting transfer of /home/seth/afpcases/systeme.afp # two upload! calls, one after another
Finished transfer of /home/seth/afpcases/systeme.afp
--> Duration: 126.07707 seconds (8.7168903909331 megabytes/s) should show transfer speed of serial uploads

Starting transfer of /home/seth/afpcases/systeme.afp # two upload calls, one after another, with …
Run Code Online (Sandbox Code Playgroud)

ruby sockets ssh performance scp

8
推荐指数
1
解决办法
1453
查看次数

标签 统计

performance ×1

ruby ×1

scp ×1

sockets ×1

ssh ×1