Высокое использование памяти для Gitlab CE
Посмотрите на это изображение, показывающее потребление памяти gitlab ce.
![gitlab ce memory usage]()
Мне действительно не нужны все эти рабочие, сторонники или единороги или все эти демоны. Это находится в IDLE. Я имею в виду, что я установил это, чтобы управлять 1 проектом, с 4 людьми, мне не нужен все эти демоны. Есть ли способ уменьшить это?
Ответы
Ответ 1
С вашего изображения это похоже на Sidekiq, и все его работники используют общую сумму в 257 Мб памяти, что нормально. Помните, что все работники Sidekiq используют один и тот же пул памяти, поэтому они используют 257mb всего, а не 257mb каждый. Как вы видели из своего собственного ответа, уменьшение количества рабочих мест Sidekiq не приведет к резкому уменьшению использования памяти, но приведет к тому, что фоновые задания будут занимать больше времени, поскольку они должны ждать, пока процесс Sidekiq будет доступен. Я бы оставил это значение по умолчанию, но если вы действительно хотите его уменьшить, я бы не уменьшил его ниже 4, так как у вас есть 4 ядра.
Процессы Unicorn также совместно используют пул памяти, но каждый рабочий имеет 1 пул, который делится между двумя его процессами. В вашем исходном изображении похоже, что у вас есть 5 работников, которые рекомендуется для 4-х ядровой системы, и каждый использует около ~ 250 мб памяти. Вы не должны замечать каких-либо различий в производительности, если вы уменьшили число рабочих до 3.
Кроме того, вы можете прочитать этот документ о том, как настроить Unicorn. Вы определенно не хотите, чтобы число рабочих было меньше 2, поскольку оно вызывает проблемы при редактировании файлов из пользовательского интерфейса GitLab, так как обсуждается здесь, а также отключает клонирование по HTTPS в соответствии с этой цитатой из связанного документа doc:
Только один рабочий Unicorn git через ssh будет работать, потому что для доступа git по HTTP требуется два работающих рабочих (один рабочий получает запрос пользователя и один рабочий для проверки авторизации).
Наконец, последние версии GitLab, похоже, выделяют больше памяти для кэша базы данных postgresql. Я бы рекомендовал настроить это свойство postgresql['shared_buffers']
в /etc/gitlab/gitlab.rb
на 1/4 вашей общей свободной памяти. Подробнее см. Ответ René Link ниже.
Ответ 2
У меня также были проблемы с высоким потреблением памяти gitlab.
В моем случае я узнал, что служба postgresl использовала большую часть памяти.
С службой postgres 14.5G из 16G, где используется ![введите описание изображения здесь]()
Я остановил одно обслуживание 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 перезапускает затронутые сервисы, а потребление памяти сейчас очень умеренное.
![введите описание изображения здесь]()
Надеюсь, это поможет кому-то другому.
Ответ 3
Поскольку GitLab 9.0, prometheus включен по умолчанию, который, как я заметил, использовал большую память объемом более 1,5 ГБ в моем случае, это можно отключить с помощью prometheus_monitoring['enable'] = false
Ответ 4
2 Параметры Я нашел просмотр gitlab.rb
-
sidekiq['concurrency'] = 1 #25 is the default
-
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]()
По-прежнему слишком много, по моему мнению.