Высокое использование памяти для Gitlab CE

Посмотрите на эту картинку, показывающую потребление памяти gitlab ce. потребление памяти gitlab ce

Мне действительно не нужны все эти рабочие, помощники, единороги или все эти демоны. Это на IDLE. Я имею в виду, что я установил это для управления 1 проектом с 4 людьми, мне не нужны все эти демоны. Есть ли способ уменьшить это?


person delmalki    schedule 21.03.2016    source источник
comment
Как бы я ни боролся с использованием памяти Gitlab, я не думаю, что этот вопрос относится к StackOverflow. Ошибка сервера может быть?   -  person Daniel Serodio    schedule 11.05.2016
comment
У меня та же проблема, мониторинг Gitlab показывает 2,3 ГБ в режиме ожидания.   -  person javydreamercsw    schedule 27.07.2016


Ответы (7)


Судя по вашему изображению, Sidekiq и все его рабочие используют в общей сложности 257 МБ памяти, что нормально. Помните, что все рабочие Sidekiq используют один и тот же пул памяти, поэтому они используют всего 257 МБ, а не по 257 МБ каждый. Как вы видели из своего собственного ответа, уменьшение количества рабочих Sidekiq не приведет к резкому уменьшению использования памяти, но приведет к тому, что фоновые задания будут занимать больше времени, поскольку им придется ждать, пока процесс Sidekiq станет доступным. Я бы оставил это значение по умолчанию, но если вы действительно хотите его уменьшить, я бы не стал уменьшать его ниже 4, поскольку у вас 4 ядра.

Процессы Unicorn также совместно используют пул памяти, но у каждого рабочего есть 1 пул, который совместно используется двумя его процессами. В вашем исходном образе у вас есть 5 рабочих процессов, что рекомендуется для 4-ядерной системы, и каждый использует около 250 МБ памяти. Вы не заметите разницы в производительности, если уменьшите количество рабочих до 3.

Кроме того, вы можете прочитать этот документ о том, как настроить Unicorn. Вы определенно не хотите, чтобы количество рабочих процессов было меньше 2, потому что это вызывает проблемы при редактировании файлов из пользовательского интерфейса GitLab, как обсуждается здесь, а также отключает клонирование через HTTPS в соответствии с этой цитатой из документа, на который я дал ссылку:

С одним воркером Unicorn будет работать только доступ git через ssh, потому что доступ git через HTTP требует двух работающих воркеров (один воркер для получения запроса пользователя и один воркер для проверки авторизации).

Наконец, последние версии GitLab, кажется, выделяют больше памяти для кеша базы данных postgresql. Я бы рекомендовал настроить это свойство postgresql['shared_buffers'] в /etc/gitlab/gitlab.rb так, чтобы оно составляло 1/4 от общего объема свободной оперативной памяти. См. ответ Рене Линка ниже для получения дополнительной информации об этом.

person BrokenBinary    schedule 21.03.2016
comment
добавление предложения @anon об отключении прометея было бы интересно - person wallass; 03.06.2019

У меня также были проблемы с высоким потреблением памяти gitlab. Итак, я запустил инструмент Linux htop.

В моем случае я обнаружил, что служба postgresl использует большую часть памяти.

При работе службы postgres было использовано 14,5 ГБ из 16 ГБвведите здесь описание изображения

Я останавливал одну службу gitlab за другой и обнаружил, что когда я останавливаю postgres, освобождается много памяти.

введите описание изображения здесь

Можешь попробовать

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"

Я просто установил общие буферы на 256 МБ, удалив комментарий #, потому что 256 МБ мне достаточно.

postgresql['shared_buffers'] = "256MB"

и выполнил gitlab-ctl reconfigure. gitlab-ctl перезапускает затронутые службы, и потребление памяти теперь очень умеренное. введите описание изображения здесь

Надеюсь, это поможет кому-то еще.

person René Link    schedule 31.05.2017
comment
Не забудьте перезапустить сервер, иначе вы получите эту ошибку stackoverflow.com/questions/49528292/ - person Sorter; 25.12.2018

Начиная с GitLab 9.0, prometheus включен по умолчанию, что, как я заметил, в моем случае использовало много памяти более 1,5 ГБ, это можно отключить с помощью prometheus_monitoring['enable'] = false

person anon    schedule 26.06.2017
comment
При запуске gitlab в системе с 2 Гб оперативной памяти потребление оперативной памяти в режиме ожидания снизилось с 1,7 Гб до 1,2 Гб. Так что это определенно имеет большое значение. Я заметил, что prometheus предназначен для мониторинга базы данных. Можно ли расширить этот ответ некоторой информацией о последствиях его отключения. - person sdfgeoff; 19.11.2018

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)"

Это после модификации конфига

Использование памяти gitlab c

Все еще слишком много, на мой взгляд.

person delmalki    schedule 21.03.2016
comment
Установка worker_processes на 1 должна была привести к сбою моих коммитов через веб-интерфейс. - person Wernight; 21.09.2016
comment
Не устанавливайте для worker_processes значение меньше 2, начиная с GitLab 10.1. gitlab.com/gitlab-org/gitlab-ce/issues/18771 - person Xunnamius; 23.10.2017
comment
@Wernight: я могу подтвердить фиксацию через проблему с веб-интерфейсом, когда для worker_processes установлено значение только 1. Так что это не рекомендуется. Установите его на 2. - person Phlogi; 16.04.2019

Я уже исправил этот случай.
Больше всего памяти использовал единорог!
Моя версия gitlab была "GitLab Community Edition 10.6.3".
И она была развернута на моем сервере, это cpu , INTEL Core i5 8400 на шесть ядер.
Итак, gitlab выделил 7 прогрессов для единорога, каждый прогресс занимал 6% памяти.

Метод:
vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
Как редактировать файл unicorn.rb
Редактировать и сохранить изменения. И выполните "gitlab-ctl restart unicorn"
Htop за изменениями unicorn.rb

person 王海吉    schedule 11.04.2018
comment
Отлично спасибо! Я работаю на 2x6 Xeon (24 потока) и не мог понять, почему он разветвляет так много процессов. В комментарии к конфигурации нет индикатора того, что это множитель количества ЦП! Просто по умолчанию 2. Я, наконец, раскомментировал 2, и все заработало нормально. - person BoeroBoy; 30.07.2018

У меня была та же проблема: ванильный Gitlab на ванильном Ubuntu 20.04 проработал, может быть, день, прежде чем вылететь без какой-либо нагрузки. EPYC на голом железе, 8c/16t и 64 ГБ оперативной памяти.

Postgresql брал свою долю 15G, как упоминалось в BrokenBinary answer, но даже исправить это до 2G было недостаточно.

Мне также пришлось исправить количество рабочих Puma:

puma['worker_processes'] = 2

Похоже, что в более новых установках Gitlab будут утечки памяти при использовании замены unicorn, у которой были утечки памяти.

Обновление: снова произошел сбой. Следующая попытка:

sidekiq['max_concurrency'] = 6
sidekiq['min_concurrency'] = 2
person Jan    schedule 29.07.2020

Когда я изменил /etc/gitlab/gitlab.rb, как упоминалось в других ответах, у меня это не сработало.

Вот что я сделал, я отредактировал следующий файл:

/var/opt/gitlab/gitlab-rails/etc/unicorn.rb (Возможно, путь к файлу в вашей машине другой)

И изменил worker_processes 9 на worker_processes 2.

person David Valdivieso    schedule 05.02.2020