Популярный open source продукт, который можно развернуть на своём оборудовании, Gitlab требует для своей работы приличное количе…

Популярный open source продукт, который можно развернуть на своём оборудовании, Gitlab требует для своей работы приличное количество ресурсов. Для того, чтобы он в установке по умолчанию работал бодрячком лучше всего начать с 4 CPU и 8 GB оперативной памяти. Можно выделить 4 GB, но будет заметно тормозить, иногда 500-е ошибки выдавать.

Для того, чтобы иметь возможность использовать Gitlab для единоличного использования, либо очень небольшого коллектива, многие из стандартных компонентов и настроек программного комплекса можно безболезненно отключить. В документации есть отдельная статья на этот счёт:

⇨ Running GitLab in a memory-constrained environment (https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.html) (Запуск 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 0

2️⃣ Меняем параметр swappiness:

# sysctl vm.swappiness=10

Добавляем в /etc/sysctl.conf:

vm.swappiness=10

3️⃣ Устанавливаем 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-ce

4️⃣ Отключаем службу puma, которая помогает обрабатывает конкурентные запросы. Без большой нагрузки можно обойтись без неё. В /etc/gitlab/gitlab.rb добавляем:

puma[‘worker_processes’] = 0

5️⃣ Уменьшаем число фоновых процессов Sidekiq:

sidekiq[‘concurrency’] = 10

6️⃣ Оптимизируем 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’] = false

8️⃣ Уменьшаем потребление памяти процессам 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

https://t.me/srv_admin | Авторская информация о системном администрировании

Добавить комментарий

You might like

© 2024 DIGITNOTES - WordPress Theme by WPEnjoy