我在使用 FTP 服务器时遇到了问题,该 FTP 服务器在 CentOS 上运行。正在使用的 FTP 服务器是 VSftpd 2.0.5(我相信这是随 CentOS 安装的默认服务器)。在此之前,服务器曾经在 Windows 上(FileZilla Server),在那里我们没有遇到这个问题,FTP 传输都非常快。
这仅在对网络存储执行 FTP GET 或 PUT 时才会发生,如果我尝试通过 FTP 传输的文件正在从 CentOS 机器上的本地硬盘写入或读取,那么它就会快速运行。
网络存储在centos下挂载使用:
mount -o rw,vers=3 IP_HERE:/ftp /media/X
当我尝试传输到网络存储时,某个地方会出现长时间延迟,尽管文件传输非常快,但整个交易需要很长时间。不幸的是,网络方面(防火墙等)不在我的控制范围内,但我正在寻找建议,以便在我们查看此问题时,我需要要求网络团队排除哪些故障。这个问题已经存在很长时间了,之前解决此问题的尝试都失败了。
下面是我刚刚发送的一个示例(发送到网络存储),报告的文件传输时间只有 9 秒,但整体传输时间要长得多。当传输大量小文件时,这种延迟显然会累积起来,导致整体传输花费大量时间。
13:47:50| put "test.img"
13:47:50| 200 PORT command successful. Consider using PASV.
13:48:22| 150 Ok to send data.
13:48:31| 226 File receive OK.
ftp: 33555060 bytes sent in 8.95Seconds 3747.49Kbytes/sec.
在上面的例子中,我在 13:47:50 启动了 ftp put 命令,并且立即得到了 200 响应。150 响应在 13:48:22 到达,然后传输似乎很快就完成了(约 9 秒),正如 13:48:31 的 226 响应所报告的那样。使用被动模式时,STORE 和 150 响应之间存在完全相同的延迟。
我想这实际上归结于 150 次响应之前发生的事情。我们在这里看到的是服务器配置问题吗?或者更可能是与防火墙有关?非常欢迎任何建议。
谢谢!
答案1
是的,我也遇到过这种情况。如果你使用 FileZilla 之类的客户端,你必须确保它不会在每次文件操作后断开连接。登录需要很长时间
答案2
在安装 VSftpd 时,首先进行安装身份验证,这可能是造成延迟的原因
如果您使用的是 Windows 客户端,我将创建 samba 共享,或者对于 Linux 客户端,我将创建 nfs。
如果您无法使用 ftp,请尝试使用 autofs mount。这可能会让您的挂载在后台保持活动状态,以减少初始连接延迟。
您还可以在 VSFTPD 设置中查找注销延迟或超时延迟并将其调高。
如果您使用 LDAP 后端进行身份验证,那么也可能存在问题。