Популярный open source продукт, который можно развернуть на своём оборудовании, Gitlab требует для своей работы приличное количество ресурсов. Для того, чтобы он в установке по умолчанию работал бодрячком лучше всего начать с 4 CPU и 8 GB оперативной памяти. Можно выделить 4 GB, но будет заметно тормозить, иногда 500-е ошибки выдавать.
Для того, чтобы иметь возможность использовать Gitlab для единоличного использования, либо очень небольшого коллектива, многие из стандартных компонентов и настроек программного комплекса можно безболезненно отключить. В документации есть отдельная статья на этот счёт:
⇨ Running GitLab in a memory-constrained environment (Запуск GitLab в среде с ограниченным объемом памяти)
Следуя этим рекомендация, можно заставить работать систему с использованием всего 2 GB оперативной памяти. Если вы запускаете его для себя на арендованном железе, то можно получить существенную экономию ресурсов.
Я взял виртуальную машину с 1 CPU и 2 GB памяти и попробовал на ней запустить Gitlab. Что для этого нужно сделать?
1️⃣ Подключаем 1 GB свопа.
Добавляем в
2️⃣ Меняем параметр swappiness:
Добавляем в
3️⃣ Устанавливаем Gitlab.
4️⃣ Отключаем службу puma, которая помогает обрабатывает конкурентные запросы. Без большой нагрузки можно обойтись без неё. В
5️⃣ Уменьшаем число фоновых процессов Sidekiq:
6️⃣ Оптимизируем Gitaly. Туда же в конфиг добавляем:
❗️Обращаю ваше внимание, что я убрал из этого раздела настройки, касающиеся cgroups. В инструкции судя по всему какая-то ошибка. Если их оставить, то сокет gitaly не поднимается. А в интерфейсе при создании каких-либо сущностей, например, нового проекта, вылетает 502 ошибка. И это не зависит от выделенных ресурсов.
7️⃣ Отключаем мониторинг:
8️⃣ Уменьшаем потребление памяти процессам GitLab:
9️⃣ Перезапускаем Gitlab:
🔟 Идём в веб интерфейс и отключаем в настройках мониторинга метрики Prometheus: Admin Area ⇨ Settings ⇨ Metrics and profiling ⇨ Metrics - Prometheus ⇨ отключаем Enable Prometheus Metrics.
После перезапуска Gitlab будет очень долго подниматься. Но в итоге заработает. Смотрим потребление памяти и проверяем, как всё работает:
Более подробно всё это описано по ссылке в статье из начала заметки. Для комфортной работы лучше всё же добавить до 2CPU и 3GB памяти. Тогда всё это будет бодро работать с предложенными параметрами. Если этого не сделать, то иногда будете видеть 500-е ошибки.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#gitlab #devops #cicd
Для того, чтобы иметь возможность использовать Gitlab для единоличного использования, либо очень небольшого коллектива, многие из стандартных компонентов и настроек программного комплекса можно безболезненно отключить. В документации есть отдельная статья на этот счёт:
⇨ Running GitLab in a memory-constrained environment (Запуск GitLab в среде с ограниченным объемом памяти)
Следуя этим рекомендация, можно заставить работать систему с использованием всего 2 GB оперативной памяти. Если вы запускаете его для себя на арендованном железе, то можно получить существенную экономию ресурсов.
Я взял виртуальную машину с 1 CPU и 2 GB памяти и попробовал на ней запустить Gitlab. Что для этого нужно сделать?
1️⃣ Подключаем 1 GB свопа.
# dd if=/dev/zero of=/swap bs=1024 count=1000000# mkswap /swap# chmod 0600 /swap# swapon /swapДобавляем в
/etc/fstab:/swap swap swap defaults 0 02️⃣ Меняем параметр swappiness:
# sysctl vm.swappiness=10Добавляем в
/etc/sysctl.conf:vm.swappiness=103️⃣ Устанавливаем Gitlab.
# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash# EXTERNAL_URL="http://10.20.1.36" apt-get install gitlab-ce4️⃣ Отключаем службу puma, которая помогает обрабатывает конкурентные запросы. Без большой нагрузки можно обойтись без неё. В
/etc/gitlab/gitlab.rb добавляем:puma['worker_processes'] = 05️⃣ Уменьшаем число фоновых процессов Sidekiq:
sidekiq['concurrency'] = 106️⃣ Оптимизируем Gitaly. Туда же в конфиг добавляем:
gitaly['configuration'] = { concurrency: [ { 'rpc' => "/gitaly.SmartHTTPService/PostReceivePack", 'max_per_repo' => 3, }, { 'rpc' => "/gitaly.SSHService/SSHUploadPack", 'max_per_repo' => 3, }, ],}gitaly['env'] = { 'GITALY_COMMAND_SPAWN_MAX_PARALLEL' => '2'}❗️Обращаю ваше внимание, что я убрал из этого раздела настройки, касающиеся cgroups. В инструкции судя по всему какая-то ошибка. Если их оставить, то сокет gitaly не поднимается. А в интерфейсе при создании каких-либо сущностей, например, нового проекта, вылетает 502 ошибка. И это не зависит от выделенных ресурсов.
7️⃣ Отключаем мониторинг:
prometheus_monitoring['enable'] = false8️⃣ Уменьшаем потребление памяти процессам GitLab:
gitlab_rails['env'] = { 'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000'}gitaly['env'] = { 'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000'}9️⃣ Перезапускаем Gitlab:
# gitlab-ctl reconfigure🔟 Идём в веб интерфейс и отключаем в настройках мониторинга метрики Prometheus: Admin Area ⇨ Settings ⇨ Metrics and profiling ⇨ Metrics - Prometheus ⇨ отключаем Enable Prometheus Metrics.
После перезапуска Gitlab будет очень долго подниматься. Но в итоге заработает. Смотрим потребление памяти и проверяем, как всё работает:
# free -hБолее подробно всё это описано по ссылке в статье из начала заметки. Для комфортной работы лучше всё же добавить до 2CPU и 3GB памяти. Тогда всё это будет бодро работать с предложенными параметрами. Если этого не сделать, то иногда будете видеть 500-е ошибки.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#gitlab #devops #cicd
👍140👎5