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

使用外部数据库时,如何向Artifactory上传层超2GB的镜像?

解决方案:Artifactory外部数据库下上传超2GB镜像失败问题

问题根源

Artifactory默认使用外部数据库时,会将二进制文件(如Docker镜像层)存储在数据库的LOB字段中,SQL Server的LOB默认最大限制为2GB,PostgreSQL的JDBC协议也存在默认大对象传输限制,导致超2GB的文件无法写入。而使用本地PVC时,Artifactory默认将二进制文件存在文件系统,因此无此问题。

核心解决思路

修改Artifactory的Binary Store配置,将大二进制文件存储回PVC挂载的文件系统,仅用数据库存储元数据(或小文件缓存),避开数据库的大小限制。

具体实施步骤

  1. 调整Artifactory存储配置
    在Kubernetes部署中,找到Artifactory的配置文件(如system.yaml,或通过Helm values.yaml配置),修改binaryStore部分:

    • 方案1:完全使用文件系统存储(推荐)

      binaryStore:
        type: fileBinaryStore
        fileBinaryStore:
          path: "/var/opt/jfrog/artifactory/data/filestore"
      

      该路径需对应Kubernetes中Artifactory Pod挂载的PVC路径,确保Pod有读写权限。

    • 方案2:缓存小文件+大文件存文件系统(兼顾性能)
      若希望小文件存在数据库提升访问速度,大文件存文件系统,可使用cacheBinaryStore:

      binaryStore:
        type: cacheBinaryStore
        cacheBinaryStore:
          provider:
            type: fileBinaryStore
            fileBinaryStore:
              path: "/var/opt/jfrog/artifactory/data/filestore"
          cacheProvider:
            type: dbBinaryStore
          maxCacheSize: "100MB" # 可根据需求调整缓存阈值,超过阈值的文件存文件系统
      
  2. 重启Artifactory实例
    应用配置后,重启Kubernetes中的Artifactory Pod,确保配置生效。

  3. 验证修复效果
    上传大于2GB的Docker镜像层,检查推送是否成功,同时查看Artifactory日志无BinaryDbException报错,且filestore目录下生成对应二进制文件。

额外注意事项

  • 确保PVC有足够的存储空间容纳大文件,避免磁盘不足问题。
  • 若坚持使用数据库存储大文件(不推荐),需针对PostgreSQL调整:
    修改PostgreSQL JDBC连接参数,添加useLargeObjectAPI=true和sendBufferSize=16777216(16MB),并确保PostgreSQL服务器的max_large_object_size参数调整为大于2GB的值。但此方案性能较差,且仍可能存在协议层面限制,不建议采用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:25:59