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

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

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

5 ответов


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

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

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

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

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


у меня также были проблемы с высоким потреблением памяти gitlab. Поэтому я запустил Linux tool htop.

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

С работает служба postgres 14.5 G из 16G были использованыenter image description here

Я остановил одну службу gitlab за другой и узнал, что когда я остановить 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

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


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


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

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


Я уже исправил это дело.
Которые используют больше всего памяти-единорог!
Моя версия gitlab была "GitLab Community Edition 10.6.3".
И это было deploied на моем сервере , это процессор , Процессор Core i5 с 8400 на шесть ядер.
Таким образом, gitlab выделяет 7 Прогрессов для unicorn, каждый прогресс занимал 6% mem.

способ:
ВИМ файл /var/opt/на гитлаб/гитлаб-рельсы/и т. д./единорог.rb
Как редактировать единорога.rb
Редактировать и сохранять изменения. И выполните "GitLab-ctl restart unicorn"
htop позади единорога.изменения РБ