103 lines
5.4 KiB
Markdown
103 lines
5.4 KiB
Markdown
---
|
||
title: Gitlab minimal install
|
||
description:
|
||
published: true
|
||
date: 2025-03-25T18:40:52.824Z
|
||
tags: gitlab
|
||
editor: markdown
|
||
dateCreated: 2025-03-25T18:39:58.350Z
|
||
---
|
||
|
||
Популярный 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. Туда же в конфиг добавляем:
|
||
```json
|
||
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-е ошибки.
|
||
|
||
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки. |