SFTP大文件传输间歇性失败求助(含SSH2_FXP_WRITE报错)
排查SFTP大文件间歇性传输失败(stalled)的步骤
根据你描述的现象:小文件传输正常,大文件间歇性stalled,且转移到启动盘问题依旧,以下是针对性的排查方向:
网络层面排查
- 监控传输过程中的网络稳定性:用
mtr <目标服务器IP>持续跟踪大文件传输时的丢包、延迟情况,间歇性问题常和网络波动、中间设备超时有关。 - 检查TCP存活参数:两端系统调整
net.ipv4.tcp_keepalive_time(建议设为300秒)、net.ipv4.tcp_keepalive_intvl(设为60秒),确保SSH连接不会因长时间无数据被中间设备断开。 - 验证MTU设置:两端及中间设备的MTU是否一致(默认1500),若存在MTU不匹配,大文件传输时的分段数据包会被丢弃,导致stall。
SSH/SFTP配置调整
- 增大SFTP缓冲区:传输时用
sftp -B 65536 <目标服务器>,将缓冲区从默认32KB提升到64KB,减少网络交互次数,降低stall概率。 - 修改SSH服务器存活配置:编辑
/etc/ssh/sshd_config,设置ClientAliveInterval 30、ClientAliveCountMax 3,让服务器主动检测客户端连接,避免超时断开。 - 禁用TCP压缩:在
sshd_config中添加Compression no,压缩大文件可能导致CPU过载,引发传输延迟。
系统资源与磁盘排查
- 实时监控系统状态:传输大文件时用
top查看CPU/内存占用,iostat -x 1监控磁盘IO利用率,若CPU或磁盘IO长期处于100%,会导致传输进程被阻塞。 - 检查磁盘健康:用
smartctl -a /dev/<磁盘设备>检测启动盘是否存在坏道或硬件故障,同时确认磁盘可用空间充足。
其他验证步骤
- 换客户端测试:用FileZilla、lftp等不同SFTP客户端传输大文件,排除原客户端的兼容性问题。
- 对比SCP传输:用
scp <本地大文件> <目标服务器>:<路径>测试,若SCP同样出现stall,说明问题出在SSH连接层面,而非SFTP协议本身。
内容的提问来源于stack exchange,提问作者Jagdish0886
相关产品推荐
相关产品推荐

