$ docker exec -ti gitlab-service-1 bash -c "gitaly configuration validate < /var/opt/gitlab/gitaly/config.toml"
$ docker exec -ti gitlab-service-1 bash # Исправьте права для Gitaly $ chown -R git:git /var/opt/gitlab/gitaly $ chmod -R 755 /var/opt/gitlab/gitaly # Создайте недостающие файлы $ touch /var/opt/gitlab/gitaly/gitaly.pid $ chown git:git /var/opt/gitlab/gitaly/gitaly.pid # Выйдите из контейнера $ exit
# Редактируем конфигурацию GitLab $ docker exec -ti gitlab-service-1 vi /etc/gitlab/gitlab.rb
Добавьте эти настройки для уменьшения памяти
# Уменьшаем количество worker'ов Gitaly gitaly['concurrency'] = [ { 'rpc' => "/gitaly.SmartHTTPService/PostReceivePack", 'max_per_repo' => 1 }, { 'rpc' => "/gitaly.SSHService/SSHUploadPack", 'max_per_repo' => 1 } ] # Ограничиваем память gitaly['ruby_max_rss'] = 200000000 # 200MB gitaly['memory_limit'] = "500MB" # Уменьшаем пул соединений gitaly['pool_size'] = 2
$ docker exec -ti gitlab-service-1 gitlab-ctl reconfigure
$ docker exec -ti gitlab-service-1 gitlab-ctl restart gitaly
$ docker exec -ti gitlab-service-1 gitlab-ctl status gitaly
Временное отключение Gitaly для восстановления работы:
# Отключаем Gitaly в конфигурации $ docker exec -ti gitlab-service-1 vi /etc/gitlab/gitlab.rb
# Временно отключаем Gitaly gitaly['enable'] = false
# Применяем изменения $ docker exec -ti gitlab-service-1 gitlab-ctl reconfigure # Проверяем что другие сервисы работают $ docker exec -ti gitlab-service-1 gitlab-ctl status
# Проверьте доступную память в контейнере $ docker exec -ti gitlab-service-1 free -h # Проверьте использование памяти процессами $ docker exec -ti gitlab-service-1 top
Если памяти мало, увеличьте лимиты в docker-compose.yml:
services: gitlab-service-1: mem_limit: 4g # Увеличьте до 4GB mem_reservation: 2g
# Останавливаем GitLab $ docker exec -ti gitlab-service-1 gitlab-ctl stop # Удаляем старые данные Gitaly (осторожно!) $ docker exec -ti gitlab-service-1 rm -rf /var/opt/gitlab/gitaly/* # Пересоздаем директории $ docker exec -ti gitlab-service-1 mkdir -p /var/opt/gitlab/gitaly/{tmp,sockets} # Исправляем права $ docker exec -ti gitlab-service-1 chown -R git:git /var/opt/gitlab/gitaly # Запускаем GitLab $ docker exec -ti gitlab-service-1 gitlab-ctl start