Назад | Перейти на главную страницу

Как глобально ограничить использование памяти git

У меня есть виртуальный частный сервер, на котором находятся репозитории git всех моих продуктов. Проблема в том, что пока я получаю данные из него, VPS умирает из-за нехватки памяти. Поэтому мне нужно ограничить использование памяти. Я знаю, как это сделать для каждого клиента .git / config (pack.windowMemory, pack.packSizeLimit).

Есть ли способ установить ограничение на сервере и глобально для всех репозиториев git на сервере?

Спасибо.

Сэм

Вы можете сделать это самостоятельно, используя встроенный limits.conf. Вы можете добавить всех пользователей Git в произвольную группу, а затем ограничить память для этой группы.

Но я не особо потворствую этому, как будто для этого нужна память - ему нужна память. Я мог бы просто представить, что процесс Git завершится раньше, чем у него закончится память, что спасет VPS от сбоя, но на самом деле ничего не достигнет.

Способ сделать это ...

Например. Ваша группа Git называется gitgroup, и у вас есть 3 существующих пользователя: bob, jane и tim.

Создать группу gitgroup

groupadd gitgroup

Затем добавьте пользователей в эту группу

usermod -a -G gitgroup bob
usermod -a -G gitgroup jane
usermod -a -G gitgroup tim

Сейчас в /etc/security/limits.conf

#groupname  type  item  limit
@gitgroup   hard  rss   512000

Это ограничит эту группу (то есть любого пользователя в ней) жестким пределом памяти 512000 КБ. Это может иметь и другие побочные эффекты для других запущенных процессов, принадлежащих этим пользователям.

Может быть предпочтительнее просто добавить ограничение памяти для оболочки конкретного пользователя при входе в систему.

Вы можете сделать это, добавив это к соответствующему пользователю .bash_profile

ulimit -v 512000

Решение ...

Вам нужно больше оперативной памяти. Если вы пытаетесь что-то сделать и в процессе не хватает памяти - либо не делайте того, что делаете, либо добавьте больше памяти. Очевидно, что вашего оборудования недостаточно для того, что вы пытаетесь сделать.