0%

Scp拷贝大文件出现stalled故障解决方法

最近倒腾oracle数据库异地备份,由于端口限制不能使用rsync(首选),只能使用scp脚本自动拷贝到本地服务器,数据库按用户备份的,最大一个文件53G,发现每次都拷贝不完就中断了;之前以为是网络的问题导致shell退出,今天开了screen,手动执行脚本,特地跟踪了一下,发现出现stalled的故障;网上有找到的方法有以下几种,个人认为第三种更治根。

限速

scp -l 1000 /from/path /to/path #单位为Kbit,1000Kbit/8=125Kb

修改内核参数

echo 0 > /proc/sys/net/ipv4/tcp_sack

调整mtu值

由于我的网络是PPPoE拨号的,最佳mtu值应为1492

1
2
3
4
5
ifconfig eth0 mtu 1492

or

ip link set dev eth0 mtu 1492

参考资料
https://www.gpforums.co.nz/threads/399001-MTU-Value-1492-vs-1500
https://stackoverflow.com/questions/11985008/sending-a-large-file-with-scp-to-a-certain-server-stalls-at-exactly-2112-kb
http://www.tp-link.com/tw/article/?faqid=190
http://www.cnblogs.com/wjoyxt/p/6873714.html