我有几个运行 Ubuntu Server 12.04.4 LTS 的服务器,它们在从我的 Windows 开发机器上传文件时都出现了间歇性问题。有时,当开始上传(通过 SFTP)时,上传从客户端开始,文件在服务器端创建,然后超时。服务器上的文件保持为 0kb。它可以被删除或覆盖,但一旦发生一次,每次后续文件上传都会在一段时间内导致相同的问题,有时是 5 分钟,有时是几小时。下载工作正常。文件大小似乎无关紧要(1kb 或 50mb),不同的 SFTP 客户端会导致相同的错误。我为此而抓狂,我所有的搜索都没有找到答案。
更新:使用 PHPStorm,我仍然遇到同样的问题,但它提供了更多信息。上传进度条完成,旋转了一会儿,然后显示:
Failed to transfer file 'filename.ext': could not close the output stream for file "sftp://host.tld/filename.ext".
我尝试关闭服务器上的防火墙,以为它可能会妨碍操作(sudo ufm disable
),但实际上却没有效果。
更新2(2014-07-29)我发现,如果我连接到加密 VPN,就不会出现此问题,如果我启用它,问题就会解决,而没有它时就会出现问题。这让我想到,这在某种程度上与我的 ISP 有关?这有可能吗?流量的唯一区别在于,它被加密到 VPN 源,而不是服务器内部(因此服务器仍将其视为外部流量)。
答案1
使用类似 wireshark 的工具来查看在两个方向上生成和发送的数据包。尽可能深入到最低级别,看看实际发生了什么。
答案2
我会检查服务器上的可用磁盘空间或您的用户配额。
在这种情况下,我预计会出现一些错误消息,而不是超时,但其他指标表明磁盘空间不足。
答案3
尝试暂时禁用防病毒软件。我遇到了这个问题,禁用 AVG 2014 后,上传就可以从我的开发电脑正常进行到服务器。
如果您使用的是 Windows 8,这也可能是由于 Windows Defender 和 AVG 尝试同时扫描相同的数据流造成的,尽管我无法证实这一假设。