У меня есть виртуальный частный сервер, на котором находятся репозитории 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
Вам нужно больше оперативной памяти. Если вы пытаетесь что-то сделать и в процессе не хватает памяти - либо не делайте того, что делаете, либо добавьте больше памяти. Очевидно, что вашего оборудования недостаточно для того, что вы пытаетесь сделать.