【问题标题】:How can I increase gitlab CE lfs file size limitation as to not get 500 server errors?如何增加 gitlab CE lfs 文件大小限制以免出现 500 个服务器错误?
【发布时间】:2016-10-19 15:56:14
【问题描述】:

我正在使用出色的 sameersbn/gitlab 为我的工作设置自定义 gitlab 服务器。

所以我有一个荒谬的场景,我使用git lfs 来存储 10-20 GB 范围内的文件,使用 gitlab ce v8.12.5,但我看到的是 500到处都是服务器错误,我的上传无法完成。

问题:有谁知道如何增加服务器端限制?

注意:这不是 413 nginx 问题,我设置了 client_max_body_size 500G,所以它应该可以转发到 gitlab 就好了。

如果需要更多信息(即日志文件等),我很乐意提供,请发表评论。

更新.1:

在这个问题上似乎有一个相关的gitlab issue

更新.2

其他相关资源:

目前我的假设是 docker 容器中的链或代理服务器的某处存在超时。

git bash: error: RPC failed; result = 18, HTP code = 200B | 1KiB/s

https://github.com/gitlabhq/gitlabhq/issues/694

所以这是我刚刚注意到 docker 映射设备 /dev/dm-7 变为 100% 满 几乎同时 gitlab 出错 500

现在我开始相信这不是 gitlab 问题,而是 docker 问题,而且 gitlab 只是空间不足。

感谢您的宝贵时间,并为您喝彩。

【问题讨论】:

    标签: nginx docker gitlab large-files git-lfs


    【解决方案1】:

    问题 1

    第一个主要问题是~/log/gitlab-workhorse.log中的以下错误

    error: handleStoreLfsObject: copy body to tempfile: unexpected EOF

    此错误与 gitlab 本身无关,而是 docker 在其最新版本中决定将默认容器大小从 100G/容器缩小到 10G/容器,这意味着无论何时我尝试上传大于 10GB 的文件,gitlab 会尝试制作一个与上传文件大小(在我的情况下为 30GB)相同的 临时文件,然后因空间不足而出现上述错误消息码头集装箱。

    我遵循了这个优秀的guide 来了解如何增加我的容器的大小,但它基本上可以归结为:

        sudo `which docker-compose` down
    

    停止正在运行的容器。

        sudo vim /etc/systemd/system/docker.service
    

    和附加

        --sotrage-opt dm.basesize=100G
    

    作为新基础图像的默认大小。现在,由于 docker 似乎存在当前问题,您必须

       sudo `which docker` rmi gitlab
    

    假设您的图片名为gitlab,并且

       sudo `which docker-compose` up
    

    重新拉取图像并以适当的大小创建它。

    如果这仍然不起作用,请尝试 sudo systemctl restart docker.service,因为当 docker 似乎没有按照您的要求执行时,这似乎会有所帮助。

        sudo docker exec -it gitlab df -h
    

    应该产生类似的东西:

    Filesystem                                                                                        Size  Used Avail Use% Mounted on
    
    /dev/mapper/docker-253:1-927611-353ffe52e1182750efb624c81a3a040d5c054286c6c5b5f709bd587afc92b38f  100G  938M  100G   1% /
    

    我不能 100% 确定所有这些设置都是必要的,但在解决下面的问题 2 时,我最终不得不在 docker-compose.yml 中设置这些设置

        - GITLAB_WORKHORSE_TIMEOUT=60m0s
        - UNICORN_TIMEOUT=3600
        - GITLAB_TIMEOUT=3600
    

    问题 2

    除了将容器大小从 10GB 调整到 100GB 之外,我还必须将以下内容添加到正在运行的实例中:

    原因是文件太大 (30GB+) 和网络速度太慢 (10MB/s) 以至于上传花费的时间比默认的 nginx 长,并且出现 504 Gateway Timeout 超时。

        sudo docker exec -it /bin/bash
    

    gitlab 容器的vim.tiny /etc/nginx/nginx.conf:

        http {
        ...
          client_max_body_size 500G;
          proxy_connect_timeout       3600;
          proxy_send_timeout          3600;
          proxy_read_timeout          3600;
          send_timeout                3600;
        ...
        }
    

    然后我重新启动了 nginx。可悲的是service restart nginx 没用,我不得不:

        service stop nginx
        service start nginx
    

    注意:我在此服务器上运行了一个反向代理,它捕获所有 http 请求,所以我不确定,但我相信我添加到容器的 nginx 配置中的所有设置都必须在代理端复制

    如果我离开了步骤,或者您想了解如何准确地执行程序的某个部分发表评论并询问。这是一个皇家痛苦,我希望能帮助某人解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 2012-04-26
      • 2019-02-27
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多