You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions结合FTP Deploy部署超万文件项目触发FTP连接中断报错求助

故障根因

你遇到的FIN包断开错误是共享主机侧主动切断FTP连接导致,和GitHub Action无关。绝大多数共享主机都会限制单FTP会话的最长连接时长、单会话最大传输文件数,用来避免单个用户占用过多公共FTP资源。你的测试项目文件少,传输耗时短,没触达限制阈值就完成了部署,而实际项目过万的文件数用FTP逐文件传输的耗时远超主机限制,因此被主动断连。

可行解决思路

  • 优化现有FTP部署配置
    你使用的SamKirkland/FTP-Deploy-Action支持多个调优参数,直接在配置的with块补充即可:
    1. 排除不需要同步的冗余文件,减少传输总量,比如.git目录、CI配置文件、本地配置文件等
    2. 调高连接、传输超时阈值
    3. 首次全量部署建议先用本地FTP工具把所有文件上传到主机,后续Action只同步变更文件,单次传输量会大幅下降
      调优后的部署步骤配置参考:
    - name: 📂 Sync files to server
      uses: SamKirkland/FTP-Deploy-Action@4.1.0
      with:
        server: ${{ secrets.FTP_SERVER }}
        username: ${{ secrets.FTP_USERNAME }}
        password: ${{ secrets.FTP_PASSWORD }}
        server-dir: /staging/
        timeout: 600000 # 传输超时设为10分钟,单位毫秒
        connTimeout: 30000 # 连接超时设为30秒
        exclude: |
          .git/**
          .github/**
          auth.json
          .gitignore
          README.md
          *.log
    
  • 更换为更稳定的SFTP协议
    如果你的共享主机支持SFTP,优先换用SFTP传输,比传统FTP连接更稳定、连接复用效率更高,可直接替换为SFTP部署Action,避免FTP的连接限制问题。
  • 压缩打包后传输(最优方案)
    放弃逐文件传输的思路:在CI步骤中将所有需要部署的代码打包为单个tar.gz压缩包,只传输这个压缩包到服务器,可将传输耗时从十几分钟降到几秒级别。如果主机支持SSH,可直接在CI中执行远程解压命令;如果没有SSH权限,可提前上传一个单文件PHP解压脚本到主机,压缩包传输完成后访问脚本完成解压,用完删除解压脚本即可。
  • 拆分部署任务
    若必须使用FTP传输,可将部署步骤拆分为多段,分别同步核心文件、插件、主题等不同目录,每段同步完成后断开FTP连接再开启新连接,避免单会话触发主机的时长、文件数限制。

内容的提问来源于stack exchange,提问作者EmWe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 08:51:02