У меня есть сервер разработки, на котором sshd
иногда перестает работать, потому что машине не хватает оперативной памяти. Да, у нас не хватает памяти, и обновление сейчас неосуществимо. Я хочу сказать машине: «Делай, что хочешь, но оставь 20 МБ и немного процессора sshd
!».
Как это можно сделать?
performance
limit
phunehehe
источник
источник
sshd
он вел себя хорошо, я думаю, что он застрял бы, если бы не хватало CPU / RAM для использования, не так ли?Ответы:
Вероятно, вы можете достичь чего-то подобного, используя cgroups с контроллером ресурсов памяти .
Я полагаю, что вы поставили бы все свои ресурсоемкие задачи в ограниченном режиме (ЦП и ОЗУ)
cgroup
и оставили быsshd
«снаружи», чтобы это не ограничивалось.(Добавление дополнительного свопа, даже в виде файла подкачки, может быть хорошим вариантом.)
источник
О, но cgroups легки :) Установите пакет libcgroup. Создайте /etc/cgconfig.conf:
Запустите
cgconfig
процесс, который создаст иерархию, cgroups и установит ограничения. Если это удастся, у вас есть две cgroups, каждая из которых имеет 50% назначенного ЦП и 1 ГБ доступной памяти (не знаю, каков ваш фактический объем доступной памяти; в этом примере предполагается, что это 2 ГБ). Теперь вам просто нужно переместить все задачи (т.е. все процессы, работающие в системе) из корневой группы в группу nosshd:Тогда вам просто нужно получить PID
sshd
процесса и переместить его в файл задач sshd:Та-да, все готово. Теперь вы можете быть уверены, что у sshd всегда будет 50% ЦП и 1 ГБ памяти.
источник
Используйте
renice
для получения более высокого приоритетаsshd
или проверьте учет. (acct) -> с этим вы можете установить ресурсы для пользователей, поэтому запустите sshd с sисточник
ionice
к этому тоже, и, вероятно, запустил sshd с nice, не используя его позже.Более общее решение проблемы использования ресурсов приложения - запуск приложений в контейнере с помощью Docker . Затем вы можете запускать контейнеры с ограничениями использования ЦП и памяти, аналогично cgroups.
источник