[求助]scp上传文件总是stall

836 views
Skip to first unread message

Junyuan Hong

unread,
May 24, 2014, 3:11:02 AM5/24/14
to ustc...@googlegroups.com
我在本地的Linux(raspberry pi)用scp上传文件到freeshell,对比较大的文件速度都是从2.1M/s开始出现stalled提示,一直下降到0,然后就传不上去了。
小文件正常。

在网上查,有人说是防火墙限制,因为在服务器上会限制速度,而scp不限制上传速度,所以会被stall通过添加-l <limit speed>,可以限制上传速度。
但是我不论是设成1M/s还是200k/s,最后速度都变成0。

要在服务器的ssh里面设置什么吗?

Bojie Li

unread,
May 24, 2014, 3:18:35 AM5/24/14
to USTC_LUG
freeshell 上没有防火墙,debian wheezy 系统的默认配置里也没有 sftp 限速。请从其他机器 sftp/scp 文件到 freeshell,如果没有问题则是 raspberry pi 的问题。


--
-- 来自USTC LUG
请使用gmail订阅,不要灌水。
更多信息more info:http://groups.google.com/group/ustc_lug?hl=en?hl=en

---
You received this message because you are subscribed to the Google Groups "USTC_LUG" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ustc_lug+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Junyuan Hong

unread,
May 24, 2014, 6:31:04 AM5/24/14
to ustc...@googlegroups.com
我试了在其他电脑上用scp上传没问题。看来是raspberry pi的问题。
但这是为什么?本地会限制这个上传速度吗?
我用sftp和树莓派之间传输文件(在局域网内)速度可以保持在2M/s左右的。
是scp的缘故?


You received this message because you are subscribed to a topic in the Google Groups "USTC_LUG" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ustc_lug/_8IIiCsyyyk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ustc_lug+u...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Best wishes
Junyuan Hong

Zihao Wang

unread,
May 24, 2014, 6:55:26 AM5/24/14
to ustc...@googlegroups.com
以前我连着wifi从树莓派传电影,sshfs、samba都没成功,每次都是传一段后树莓派崩溃…出错信息提到了ext fs,貌似是读写问题…树莓派的文件都放在USB移动硬盘里…

Junyuan Hong

unread,
May 24, 2014, 7:53:12 AM5/24/14
to ustc...@googlegroups.com
我用过sshfs,ssh经常会卡死。但是为什么用sftp传输(gui客户端)还是很稳定的。
网上有直接用sftp传输的方法,回头试试。

Xiaoxiao Pu

unread,
May 24, 2014, 9:28:37 AM5/24/14
to ustc...@googlegroups.com
我之前用sshfs向树莓派传文件时也遇到过大文件速度很慢的情况,dmesg显示out of memory,然后sshd被杀掉了,但是内存还是充裕的,后来加了1GB的swap就没这个问题了。

在 2014年5月24日星期六UTC+8下午7时53分12秒,Junyuan Hong写道:

Bojie Li

unread,
May 24, 2014, 10:21:21 AM5/24/14
to ustc...@googlegroups.com
我没用过 sshfs。在 raspberry pi(model B,512M)上用 sftp 和 scp 从来没出过问题。

sftp 用 lftp sftp://user@hostname 就行了,输入 ssh 密码。ls,rm,cd 之类是对远程目录的操作,local ls,local rm, local cd 之类是对本地目录的操作,put 和 get 分别是上传和下载文件,mirror 是下载目录,mirror -r 是上传目录。lftp 不仅支持 sftp 还支持 ftp、http,很好用。

Junyuan Hong

unread,
May 24, 2014, 10:38:16 AM5/24/14
to ustc...@googlegroups.com
我主要是想在脚本里面自动上传文件。所以这种要输入密码的就不太方便了。

Xiaoxiao Pu

unread,
May 24, 2014, 10:44:11 AM5/24/14
to ustc...@googlegroups.com
可以配置SSH Key,就不需要输入密码了。



在 2014年5月24日星期六UTC+8下午10时38分16秒,Junyuan Hong写道:

Bojie Li

unread,
May 24, 2014, 10:49:05 AM5/24/14
to ustc...@googlegroups.com
lftp -u username,placeholder sftp://hostname
告诉 lftp 一个假的密码,它就不会向你要密码了。当调用 ssh 的时候,ssh key 优先。

Bojie Li

unread,
May 24, 2014, 10:59:07 AM5/24/14
to ustc...@googlegroups.com
我见过两种情况会导致 TCP 连接卡住,一种是 MTU 设置过大,一种是中间的防火墙自作聪明破坏了 SACK。不过,你的本地电脑跟 raspberry pi 是同局域网吧,本地电脑没有问题,我就想不通了。

你从本地向 freeshell 用 scp 上传的速度大约是多少?你是在校内还是校外?
从 raspberry pi 传大文件到 freeshell,每次 stall 的位置是否相同?stall 的时候在 rpi 上 top,看内存是否接近占满,CPU 是否忙碌?
Raspberry pi 是通过有线网还是无线网接入网络?没有使用 VPN 吧?

Junyuan Hong

unread,
May 24, 2014, 11:12:37 AM5/24/14
to ustc...@googlegroups.com
上传160M的MP4文件,scp的速度从2.1M/s一直下降到0,现实stalled。
我是校内的。
每次stall的位置相同什么意思?对不同的文件>100M的都一样。
top:
%Cpu(s):  4.6 us,  2.9 sy,  0.0 ni, 92.2 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem:    448180 total,   403036 used,    45144 free,    21664 buffers
KiB Swap:   102396 total,        0 used,   102396 free,   272204 cached

rasp先有线连到一个路由器上,这个路由器再连到另外一个路由器上(也是有线),再连到交换机上。。。
没有VPN
很长时间之后会显示Write failed:broken pipe    lost connection

Bojie Li

unread,
May 24, 2014, 11:28:24 AM5/24/14
to USTC_LUG
stall 的位置,指的是传输了多少 MB 之后 stall 住了,scp 应该有这个显示吧。
raspberry pi 上用 wget 下载文件,比如 http://mirrors.ustc.edu.cn/ubuntu-releases/14.04/ubuntu-14.04-desktop-amd64.iso 速度怎么样?会不会卡住?

Junyuan Hong

unread,
May 24, 2014, 11:32:45 AM5/24/14
to ustc...@googlegroups.com
大概几百k吧,没注意看。
用wget下iso,稳定在8-9M/s完全不卡

Junyuan Hong

unread,
May 24, 2014, 11:40:56 AM5/24/14
to ustc...@googlegroups.com
用lftp传输,shell脚本:
lftp -c "open -p 30252 sftp://root:sw...@ssh.freeshell.ustc.edu.cn;cd /var/www/media;put \"$i\""
$i是一个文件名
刚开始10s还有速度,然后就和scp一样了:
`1.mp4' at 557056 (0%) eta:10h [Sending data]

Bojie Li

unread,
May 24, 2014, 1:51:37 PM5/24/14
to ustc...@googlegroups.com
首先尝试用 scp 从 freeshell 上下载文件吧,如果没有卡住,我就不能解释了。

如果下载卡住了,就抓包测试吧。在 freeshell 上打开 tcpdump 22 端口,用 nohup 后台运行并输出到文件,然后退出 ssh 终端(以免终端的包与 scp 包混在一起)。本地(本地指的是 raspberry pi,下同)也 tcpdump 22 端口。然后执行 scp 命令,卡住之后等几秒,停止本地 tcpdump,登录进 freeshell 结束掉 tcpdump 进程。比较本地和 freeshell 上抓到的包,根据端口号,只看 scp 所属 tcp 连接的包(排除掉 ssh 终端的包),看两边的包 TCP 序列号是否能对应起来。如果不能,则说明是有路由器在中间自作聪明修改序列号,在本地设置 sysctl net.ipv4.tcp_sack = 0(关闭内核的选择 ACK),看看是否正常了。如果序列号能够对应,则连接卡死(stall)很可能是由于丢包,看看是哪个包一边发出去了但另一边没有收到,再进一步检查。抓包检查是个力气活,如果你不知道这一段在说什么,就不要折腾了。

谁有 ssh 卡住的经验都说说吧。

Junyuan Hong

unread,
May 24, 2014, 9:25:13 PM5/24/14
to ustc...@googlegroups.com
忽然发现本地电脑并不是没有问题。
在笔记本XP上上传到freeshell速度稳定在880kb/s,而在笔记本的ubuntu10.04上同样是用FIleZila上传到freeshell和在rasp上情况一样,没有速度,超时失败。都是在同一个局域网。
我本来在想是不是权限的问题,然后就上传到用户目录下,root和自己加的用户都试了,不行。

在 2014年5月24日星期六UTC+8下午10时59分07秒,Bojie Li写道:

Junyuan Hong

unread,
May 24, 2014, 10:12:56 PM5/24/14
to ustc...@googlegroups.com
在同一个路由器中的笔记本(ubunt10.04)和rasp之间用scp传输文件也很正常,无论是从rasp上还是从笔记本上用sftp都没有问题。

Bojie Li

unread,
May 25, 2014, 3:48:12 AM5/25/14
to USTC_LUG
做个试验吧,在 Raspberry Pi 上执行 sudo ifconfig eth0 mtu 576,在 freeshell 上执行 sudo ifconfig venet0 mtu 576,然后再尝试 scp,如果不会卡死了,就是 MTU 的问题。如果确实是 MTU 问题,想继续排查,可以把 RPi 设置回原来的 MTU(1500),在 RPi 上执行 sudo ip route flush cache(清除 MTU 缓存),sudo tcpdump -n -i any icmp,在另一个终端里 ssh -p 30xxx ssh.freeshell.ustc.edu.cn,此时 tcpdump 应该输出 ICMP 202.141.160.99 unreachable - need to frag (mtu 1480)。此时 ip route get 202.141.160.99,也应该能看到 cache ... mtu 1480。如果有任何异常请回复。

Junyuan Hong

unread,
May 25, 2014, 3:57:11 AM5/25/14
to ustc...@googlegroups.com
问题好像是路由器造成的,这里有3级路由,对windows来说没什么问题。对Linux就会出现没速度的问题。
如果直接接到第一个路由上速度正常,7M/s,接第二个上也有速度,但是波动很大,10到200k/s。
如果是路由的问题,为什么windows没问题?

Junyuan Hong <jyho...@gmail.com>于2014年5月25日星期日写道:
在同一个路由器中的笔记本(ubunt10.04)和rasp之间用scp传输文件也很正常,无论是从rasp上还是从笔记本上用sftp都没有问题。
--
Best wishes
Junyuan Hong


--
Best wishes
Junyuan Hong

Junyuan Hong

unread,
May 25, 2014, 7:45:37 AM5/25/14
to ustc...@googlegroups.com
最后我把第一个路由器去掉了,最后一个路由器使用网桥模式,第一个路由器不变。
终于可以正常上传了。。。
虽然不明白是为什么

在 2014年5月24日星期六UTC+8下午3时11分02秒,Junyuan Hong写道:
Reply all
Reply to author
Forward
0 new messages