Тормозит, медленно работает гит git на BitrixVm

Введение: распространённая проблема медленного git на BitrixVM

Если вы работаете с git на виртуальной машине BitrixVM и замечаете, что даже простые команды вроде git status или git add выполняются по 5–30 секунд — вы не одиноки. Это одна из самых частых жалоб разработчиков, работающих с Битрикс в окружении BitrixVM. Причин несколько, и каждую нужно проверять последовательно.

Прежде всего, замерьте реальную скорость работы git:

Если команда выполняется более 2–3 секунд на репозитории среднего размера — проблема есть. Разберём основные причины.

Причина 1: SELinux блокирует операции git

SELinux (Security-Enhanced Linux) — система мандатного контроля доступа, включённая по умолчанию в CentOS/RHEL, на котором базируется BitrixVM. SELinux может значительно замедлять файловые операции git, добавляя проверки безопасности к каждому обращению к файлу.

Проверить статус SELinux:

Если видите Enforcing — SELinux активен и может быть причиной тормозов.

Временно отключить (до перезагрузки):

После этого снова выполните time git status и сравните результат. Если git ускорился — причина подтверждена.

Навсегда отключить SELinux (в файле /etc/selinux/config):

После изменения файла требуется перезагрузка сервера. Важно понимать, что отключение SELinux снижает безопасность системы — на production-серверах это решение нужно обдумать.

Причина 2: Права файлов и владелец репозитория

Начиная с Git 2.35.2, git проверяет, совпадает ли владелец текущего каталога с пользователем, запустившим команду. Если вы запускаете git от имени одного пользователя, а файлы принадлежат другому — git выполняет дополнительные проверки или выдаёт ошибку.

Проверить владельца директории проекта:

Решение — выставить владельца проекта на bitrix:

После этого все git-операции должны запускаться от имени пользователя bitrix, чтобы владелец совпадал.

Причина 3: Настройки core.fsmonitor и core.trustctime

Git может тормозить, если отслеживает изменения файлов по времени модификации (ctime). На BitrixVM файловая система активно работает с метаданными, и это влияет на производительность.

Рекомендованный набор настроек для ускорения:

Причина 4: Большой репозиторий — много объектов в .git

Со временем в репозитории накапливаются «мусорные» объекты: старые коммиты, unreachable-блобы, временные ссылки. Это замедляет git при каждой операции, требующей обхода объектов.

Оптимизируйте репозиторий командами:

После git gc размер директории .git/objects/ должен заметно уменьшиться, а скорость операций — вырасти.

Настройка git-конфига для работы под пользователем bitrix

Для постоянной оптимизации добавьте следующие настройки в глобальный конфиг git пользователя bitrix. Отредактируйте файл /home/bitrix/.gitconfig или примените через команды:

Диагностика: профилирование медленных операций

Если причина торможения неочевидна, используйте встроенные инструменты трассировки git:

Для глубокой системной диагностики:

Вывод покажет таблицу с системными вызовами и временем их выполнения. Если большая доля времени приходится на вызовы stat или openat — причина в файловой системе или SELinux.

Полезные алиасы git для ускорения работы

Добавьте алиасы в конфиг git для более быстрого ввода часто используемых команд:

Для работы с большими репозиториями также полезен Git LFS — перенос тяжёлых файлов (изображения, архивы шаблонов Битрикс) в LFS-хранилище:

После всех перечисленных оптимизаций скорость git status на типичном проекте Битрикс должна снизиться с десятков секунд до долей секунды.