РЕШЕНИЕ ПРОБЛЕМЫ GITALY
ШАГ 1: Проверка конфигурации Gitaly
$ docker exec -ti gitlab-service-1 bash -c "gitaly configuration validate < /var/opt/gitlab/gitaly/config.toml"
ШАГ 2: Исправление прав доступа для Gitaly
Войдите в контейнер
$ 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
ШАГ 3: Уменьшение потребления памяти Gitaly
# Редактируем конфигурацию 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
ШАГ 4: Применение изменений
Переконфигурируем GitLab
$ docker exec -ti gitlab-service-1 gitlab-ctl reconfigure
Перезапускаем только Gitaly
$ docker exec -ti gitlab-service-1 gitlab-ctl restart gitaly
Проверяем статус
$ docker exec -ti gitlab-service-1 gitlab-ctl status gitaly
ШАГ 5: Если 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
ШАГ 6: Проверка доступности памяти
# Проверьте доступную память в контейнере $ docker exec -ti gitlab-service-1 free -h # Проверьте использование памяти процессами $ docker exec -ti gitlab-service-1 top
ШАГ 7: Увеличение памяти контейнера (если нужно)
Если памяти мало, увеличьте лимиты в docker-compose.yml:
services: gitlab-service-1: mem_limit: 4g # Увеличьте до 4GB mem_reservation: 2g
ШАГ 8: Полное пересоздание Gitaly
# Останавливаем 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