gpt4 book ai didi

docker - 使用 LFTP 的持续部署在大约 10 个文件后暂时获得 "stuck"

转载 作者:行者123 更新时间:2023-12-04 14:20:50 25 4
gpt4 key购买 nike

我正在使用 GitLab Community Edition 和 GitLab runner CI 安装程序使用 LFTP 在服务器上部署(同步)一堆 JSON 文件。然而,这项工作似乎大约每 10 个文件“卡住”几分钟。有时必须同步大约 400 个文件,这项工作就会崩溃,因为有时需要一个多小时才能完成。 JSON 文件都是 1KB。源服务器和目标服务器都不应该有任何限制 FTP 速率的防火墙。两者都托管在 OVH。

执行以下 LFTP 命令以同步所有内容:

lftp -v -c "set sftp:auto-confirm true; open sftp://$DEVELOPMENT_DEPLOY_USER:$DEVELOPMENT_DEPLOY_PASSWORD@$DEVELOPMENT_DEPLOY_HOST:$DEVELOPMENT_DEPLOY_PORT; mirror -Rev ./configuration_files configuration/configuration_files --exclude .* --exclude .*/ --include ./*.json"

作业在 Docker 中运行,使用 this容器来部署一切。什么可能导致这种情况?

最佳答案

对于那些来自谷歌的人,我们有完全相同的设置。在 docker 或其他一些 CI 中运行时让 LFTP 停止挂起的方法你可以使用这个命令:

lftp -c "set net:timeout 5; set net:max-retries 2; set net:reconnect-interval-base 5; set ftp:ssl-force yes; set ftp:ssl-protect-data true; open -u $USERNAME,$PASSWORD $HOST; mirror dist / -Renv --parallel=10"

这会做几件事:

  1. 它使它不会永远等待或进入连续循环当它不能执行命令时。这应该会加快速度。

  2. 确保我们使用的是 SSL/TLS。如果你不需要这个删除那些选项。

  3. 将一个文件夹同步到新位置。选项 -Renv 可以在这里解释:https://lftp.yar.ru/lftp-man.html

最后,在 gitlab CI 中,我将作业设置为在失败时重试。这将启动一个新的 docker 实例,绕过任何打开的文件或连接限制。上面的 LFTP 命令将再次运行,但由于我们使用了 -n 标志,如果它不成功,它只会移动在第一个作业中丢失的文件。这样可以毫不费力地移动所有内容。您可以在此处阅读有关 CI 作业重试的更多信息:https://docs.gitlab.com/ee/ci/yaml/#retry

关于docker - 使用 LFTP 的持续部署在大约 10 个文件后暂时获得 "stuck",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49843692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com