2

私は優れたsameersbn/gitlabを使用して、仕事用のカスタム gitlab サーバーをセットアップしています。

だから私はばかげたシナリオを持っています.gitlab ce v8.12.5を使用して10〜20 GBgit lfsの範囲のファイルを保存するために使用していますが、いたるところに500のサーバーエラーが表示され、アップロードを完了できません.

質問: サーバー側の制限を増やす方法を知っている人はいますか?

注: これは 413 nginx の問題ではありませんclient_max_body_size 500G。gitlab に正常に転送されるように設定しました。

さらに情報が必要な場合 (つまり、ログ ファイルなど)、喜んで提供します。コメントを残してください。

Update.1:

この同じ問題に関連するgitlabの問題があるようです。

Update.2

関連するその他のリソース:

今のところ、Docker コンテナのチェーンまたはプロキシ サーバーのどこかにタイムアウトがあるというのが私の仮説です。

git bash: エラー: RPC に失敗しました。結果 = 18、HTP コード = 200B | 1KiB/秒

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

これは、gitlab が500でエラーを出すのとほぼ同時に、docker にマップされたデバイス/dev/dm-7100% フルになることに気付いたところです。

これは gitlab の問題ではなく、docker の問題であり、gitlab のスペースが不足しているだけだと思い始めています。

お時間をいただき、ありがとうございます。

4

1 に答える 1

5

問題1

最初の大きな問題は、次のエラーでした~/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

実行中のコンテナを停止します。

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

と追加

    --sotrage-opt dm.basesize=100G

新しい基本イメージのデフォルト サイズとして。ドッカーに現在問題があるように見えるので、あなたはしなければなりません

   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/秒) ため、アップロードにデフォルトの 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 構成に追加したすべての設定をプロキシ側で複製する必要があると思います。

私がステップアウトした場合、または手順の特定の部分を正確に行う方法について明確にしたい場合は、コメントを残して質問してください. これは王室の苦痛であり、この解決策で誰かを助けることを願っています.

于 2016-10-28T00:26:33.980 に答える