![FTP 速率在短时间后下降](https://linux22.com/image/551081/FTP%20%E9%80%9F%E7%8E%87%E5%9C%A8%E7%9F%AD%E6%97%B6%E9%97%B4%E5%90%8E%E4%B8%8B%E9%99%8D.png)
我正在尝试将大量(数十 GB 到数百 GB)文件传输到 HP DL380 主机,该主机在 10 GigE 网络/LAN 上运行 vsftpd。传输最初很快,即 45-60 MB/秒或大致相当于磁盘的速度。几分钟后(通常约 10-12 分钟),传输速率下降到涓涓细流(250 KB/秒左右)。我们经常对其他服务器进行这种操作,因此似乎服务器本身存在问题,或者客户端/服务器之间可能存在防火墙。
我正在尝试解决此问题,以及为什么我们的费率会突然发生巨大变化。这似乎与网络或客户端/服务器的负载无关。我们怀疑这与被动/主动模式有关,但尚未解决(传输处于被动模式)。
我希望有人见过类似的事情,即 FTP 性能急剧下降。也许是某些网络参数?vsftpd 中的配置项?
无论如何,任何建议都值得赞赏。
答案1
在集中精力解决 FTP 问题之前,您应该执行一些综合测试以排除其他原因。(由于您正在运行 vsftpd,因此我假设客户端和服务器都是 Linux。)
- 网络数据包丢失:检查客户端和服务器上的输出
cat /proc/net/dev
,查看是否有任何错误或丢失的数据包。 - 网络负载测试:使用吞吐量测试工具,例如防火墙进行长时间的测试,看看是否可以重现该问题。使用 监控吞吐量
cat /proc/net/dev
。 - MTU:如果您使用的是 10GbE,则可能启用了巨型帧(即 MTU 大小大于 1500)。如果启用了巨型帧,请确保所有主机和网络设备都支持巨型帧,并且您没有在任何地方过滤 ICMP 数据包(ICMP 数据包用于 MTU 路径发现)。
- 服务器磁盘:在服务器上,用于
dd
读取/dev/zero
和写入目标文件系统上的本地文件。使用 监控吞吐量iostat
。 - 客户端磁盘:如果您可以从该客户端成功地通过 FTP 连接到其他服务器,则可能不需要测试这一点。
如果上述任何测试显示问题,您应该知道下一步该怎么做。否则,请查看 FTP 端:
- 如果传输速度变慢,断开连接后恢复传输会发生什么情况?传输速度会立即变慢,还是会先变快,然后再变慢?
- 当从客户端和服务器端启动传输时(即连接到客户端上的 FTP 服务器),您是否会得到不同的行为?
- 使用 检查 FTP 服务器和客户端的内存使用情况
top
。如果存在内存泄漏,则可能会发生交换并减慢所有速度。 - 检查 FTP 服务器和客户端的 CPU 使用率是否有任何异常行为。
答案2
除了汤姆的回答之外,您可能还想检查您的交换机以确保您以正确的速度和全双工运行。
答案3
我会检查你的磁盘 IO...也许传输一开始似乎很快然后就慢下来的原因是,一开始操作系统正在将数据加载到 RAM 和磁盘缓冲区中。
大多数现代操作系统都会这样做,以使事情看起来更快......
一旦您的 RAM 和磁盘缓冲区满了,这可能需要几分钟才能显示真正的磁盘 IO 速度,并且文件传输速度会变慢......
我们最近发布了一篇有关 10GBPS 文件传输的磁盘 IO 的博客,请看一下,它可能会对您有所帮助...
http://www.filecatalyst.com/analysis-on-improving-throughput-part-1-disk-io/
完全披露:此用户是 FileCatalyst 的员工。