web-dev-qa-db-ja.com

Gitlab CEの高いメモリ使用量

Gitlab ceのメモリ消費量を示すこの写真を見てください。 gitlab ce memory consumption

これらのワーカー、sidekiq、Unicorn、またはすべてのデーモンは本当に必要ありません。これはアイドル状態です。つまり、1人のプロジェクトを管理するためにこれをインストールしました。4人ほどで、これらのデーモンはすべて必要ではありません。これを減らす方法はありますか?

28
delmalki

画像から見ると、Sidekiqとそのすべてのワーカーは合計257MBのメモリを使用していますが、これは正常です。すべてのSidekiqワーカーは同じメモリプールを使用するため、それぞれ257 MBではなく、合計257 MBを使用していることに注意してください。あなた自身の答えから見てきたように、Sidekiqワーカーの数を減らしてもメモリ使用量が大幅に減少することはありませんが、Sidekiqプロセスが利用可能になるまで待たなければならないため、バックグラウンドジョブに時間がかかります。この値はデフォルトのままにしますが、実際に値を減らしたい場合は、4つのコアがあるため、4未満には下げません。

Unicornプロセスもメモリプールを共有しますが、各ワーカーには2つのプロセス間で共有される1つのプールがあります。元のイメージでは、5つのワーカーがあり、4つのコアシステムに推奨されており、それぞれが約250 MBのメモリを使用しているように見えます。ワーカーの数を3に減らした場合、パフォーマンスの違いに気付かないはずです。

また、Unicornの設定方法について this doc を読むこともできます。 ここで説明 のように、GitLab UI内からファイルを編集するときに問題が発生し、この引用に従ってHTTPS経由のクローン作成も無効になるため、ワーカーの数を2未満にしたくないことは間違いありません私がリンクしたドキュメントから:

1つのUnicornワーカーでは、git over sshアクセスのみが機能します。これは、git over HTTPアクセスに実行中のワーカーが2人必要であるためです(1人のワーカーがユーザーリクエストを受信し、1人のワーカーが承認チェックを行います)。

最後に、GitLabの最近のバージョンは、postgresqlデータベースキャッシュにより多くのメモリを割り当てるようです。このプロパティを設定することをお勧めしますpostgresql['shared_buffers'] in /etc/gitlab/gitlab.rb合計空きRAMの1/4になります。詳細については、下記の RenéLinkの回答 を参照してください。

15
BrokenBinary

また、gitlabのメモリ消費量が多いという問題もありました。そこで、Linuxツールhtopを実行しました。

私の場合、postgreslサービスがほとんどのメモリを使用していることがわかりました。

postgres service running 14.5Gの16Gが使用されました enter image description here

Gitlabサービスを1つずつ停止し、stop postgresのときに多くのメモリが解放されることを発見しました。

enter image description here

あなたはそれを試すことができます

gitlab-ctl stop postgresql

そして、サービスを再び開始します

gitlab-ctl start postgresql

最後に、/etc/gitlab/gitlab.rb

##! **recommend value is 1/4 of total RAM, up to 14GB.**
# postgresql['shared_buffers'] = "256MB"

コメントを削除して共有バッファを256MBに設定しました#、私にとっては256MBで十分だからです。

postgresql['shared_buffers'] = "256MB"

実行されたgitlab-ctl reconfigure。 gitlab-ctlは影響を受けるサービスを再起動し、メモリ消費は非常に緩やかになりました。 enter image description here

うまくいけば、それは他の誰かを助ける。

28
René Link

GitLab 9.0以降、プロメテウスはデフォルトで有効になっていますが、私の場合は1.5GBを超えるメモリを大量に使用していることに気づきましたが、prometheus_monitoring['enable'] = false

11
anon

2 gitlab.rb

  1. sidekiq['concurrency'] = 1 #25 is the default
  2. Unicorn['worker_processes'] = 1 #2 is the default

そして、これは彼らの警告に従って理解する必要があります:

## Only change these settings if you understand well what they mean
## see https://about.gitlab.com/2015/06/05/how-gitlab-uses-Unicorn-and-  Unicorn-worker-killer/
## and https://github.com/kzk/Unicorn-worker-killer
# Unicorn['worker_memory_limit_min'] = "300*(1024**2)"
# Unicorn['worker_memory_limit_max'] = "350*(1024**2)"

これは設定変更後です

Memory usage gitlab c

私の意見ではまだ多すぎる。

8
delmalki

このケースはすでに修正済みです。
最も使用されたメモリはUnicornです。
私のgitlabのバージョンは「GitLab Community Edition 10.6.3」でした。

したがって、gitlabはUnicornに7つの進行状況を割り当て、各進行状況は6%メモリを占有しました。

方法:
vim /var/opt/gitlab/gitlab-Rails/etc/Unicorn.rb
nicorn.rbの編集方法
変更を編集して保存します。そして、「gitlab-ctl restart Unicorn」を実行します
nicorn.rbの背後のhtopが変更されます

2
王海吉