У меня есть хост (Ubuntu 14.04.4 LTS 64 бит, ядро 3.13.0-85-generic), на котором много одновременных SSH-соединений. Вход по SSH недавно начал сбоить, и в журнале написано:
sshd[26057]: pam_systemd(sshd:session): Failed to create session: Cannot allocate memory
Я не могу понять даже, какая подсистема обеспечивает это ограничение. Сама машина имеет 4 ГБ свободной оперативной памяти и 0 байт подкачки (из 8 ГБ):
Я написал небольшую программу на C, которая блокирует гигабайт оперативной памяти, и она делает это без проблем, так что это не вопрос системной оперативной памяти.
Я изучил ulimit
настройки и посмотрел /proc/<pid>/limits
чтобы узнать, определены ли ограничения ОС, но все без ограничений.
Я также изучил ограничение ресурсов systemd, словно MemoryLimit
параметр в /etc/systemd/system/sshd.service
.
Кажется, ничего не действует. Есть идеи, откуда взялся этот предел памяти?
Редактировать:
вообще-то странно, что systemd установлен. Это пакеты systemd:
# aptitude search systemd|grep "^i" i A libpam-systemd - system and service manager - PAM module i A libsystemd-daemon0 - systemd utility library i A libsystemd-login0 - systemd login utility library i A systemd-services - systemd runtime services i A systemd-shim - shim for systemd
Это версия 204-5ubuntu20.19.
apt-cache rdepends
на самом деле не дает мне четкого представления, почему он установлен. Он также не полностью установлен. В systemctl
команда недоступна, например.
Edit2: кажется, что компоненты systemd включены из-за dbus. Если я попытаюсь установить dbus в другой системе 14.04, он действительно захочет загрузить systemd.