如何增加 gitlab CE lfs 文件大小限制,以免出现 500 个服务器错误?

riv*_*nov 2 nginx large-files gitlab docker git-lfs

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

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

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

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

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

更新 1:

在同一问题上似乎有一个相关的gitlab问题。

更新 2

其他相关资源:

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

git bash: 错误: RPC 失败;结果 = 18,HTP 代码 = 200B | 1KiB/s

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

所以这是我刚刚注意到docker映射的设备在 gitlab 错误出500的同一时间/dev/dm-7变得100% 满

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

感谢您的时间,并干杯。

riv*_*nov 5

问题一

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

error: handleStoreLfsObject: copy body to tempfile: unexpected EOF

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

我遵循了这个关于如何增加容器大小的优秀指南,但它基本上归结为:

    sudo `which docker-compose` down
Run Code Online (Sandbox Code Playgroud)

停止正在运行的容器。

    sudo vim /etc/systemd/system/docker.service
Run Code Online (Sandbox Code Playgroud)

并附加

    --sotrage-opt dm.basesize=100G
Run Code Online (Sandbox Code Playgroud)

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

   sudo `which docker` rmi gitlab
Run Code Online (Sandbox Code Playgroud)

假设您的图像被称为gitlab,并且

   sudo `which docker-compose` up
Run Code Online (Sandbox Code Playgroud)

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

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

    sudo docker exec -it gitlab df -h
Run Code Online (Sandbox Code Playgroud)

应该产生类似的东西:

Filesystem                                                                                        Size  Used Avail Use% Mounted on

/dev/mapper/docker-253:1-927611-353ffe52e1182750efb624c81a3a040d5c054286c6c5b5f709bd587afc92b38f  100G  938M  100G   1% /
Run Code Online (Sandbox Code Playgroud)

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

    - GITLAB_WORKHORSE_TIMEOUT=60m0s
    - UNICORN_TIMEOUT=3600
    - GITLAB_TIMEOUT=3600
Run Code Online (Sandbox Code Playgroud)

问题二

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

这样做的原因是文件大小太大(30GB+),网络速度太慢(10MB/s),上传时间比默认的 nginx 长,并且超时504 Gateway Timeout

    sudo docker exec -it /bin/bash
Run Code Online (Sandbox Code Playgroud)

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;
    ...
    }
Run Code Online (Sandbox Code Playgroud)

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

    service stop nginx
    service start nginx
Run Code Online (Sandbox Code Playgroud)

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

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