我的一些代码使用队列将文件上传到 FTP 服务器。当文件进入队列时,会尝试连接,如果成功,则上传文件。一旦队列为空,就会断开服务器连接。非常简单。
队列可以且将被多个线程访问。在某些情况下,队列完成,因此断开连接,但随后新文件会立即排队,并开始新的连接\上传循环。在某些极端情况下,它只会上传1 个文件连接和断开之间只需重复该过程几分钟甚至几个小时。
我认为这是不可接受的,并将相应地更改代码,但我想知道:
问题
假设我们忽略了明显的时间和资源浪费(至少可以说,所有这些断开/连接都是不必要的)。
FTP 服务器介意吗?这种行为会被反对吗?是否很粗鲁?甚至会被视为某种形式的边缘洪水攻击或锤击攻击吗?
答案1
取决于服务器管理员。给他们发电子邮件并询问 AUP。理想情况下,每个服务器都有可调的重新连接延迟。
我不会说这种行为不好;这实际上取决于 FTP 服务器的作用和整体软件平台架构。
考虑放弃 FTP,如果只能使用 FTPS,最好使用 SFTP。长期以来,基于密码的自动登录一直不被推荐。
答案2
一般不会。我参与运营过一个这样的网站,我最大的烦恼是:
- 每秒多次登录的用户。通常这是由于客户端脚本中有人忘记设置“sleep”导致的。
- 从不注销的人所以我无法正确耗尽我的负载均衡器。
- 人们在每个会话中重复传输一个文件并同时启动数百到数千个连接。
- 人们传输非常大的文件,并将其分成几个较小的批次。
- 人们连接到我们的网站并期望它对于 FTP 等旧协议 100% 可靠。
还要记住,如果您连接到一个繁忙的站点,许多人会安排他们的作业在 5 点、15 点等时间运行 - 例如 1:00、1:05、1:10、1:15。如果您真的想成为一名优秀的消费者,请避免在 5 点或 0 点运行。您不仅在帮助站点管理员,而且可能会获得更好的性能。一些调度建议:
- 临时运行你的作业(假设这不会总是在 0 和 5 上)
- 在 2-4、7-9 分钟运行作业。这为在 0 和 5 开始的作业提供了一点缓冲来完成。
- 在您计划的作业中随机设置睡眠时间,这样它就不会总是在同一时间访问文件服务器。
- 如果可以的话,请不要安排你的工作每 5 分钟运行一次以上。