El problema es causado por el TasksMax
atributo systemd. Se introdujo en systemd 228 y hace uso del subsistema pid de cgroups, que se introdujo en el kernel de Linux 4.3. Un límite de tareas de 512
por lo tanto, está habilitado en systemd si se está ejecutando el kernel 4.3 o más reciente. La característica se anuncia aquí y se introdujo en esta solicitud de extracción y los valores predeterminados se establecieron mediante esta solicitud de extracción. Después de actualizar mi kernel a 4.3, systemctl status docker
muestra un Tasks
línea:
# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/etc/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2016-01-15 19:58:00 CET; 1min 52s ago
Docs: https://docs.docker.com
Main PID: 2770 (docker)
Tasks: 502 (limit: 512)
CGroup: /system.slice/docker.service
Ajuste TasksMax=infinity
en el [Service]
sección de docker.service
soluciona el problema docker.service
suele estar en /usr/share/systemd/system
, pero también se puede poner/copiar en /etc/systemd/system
para evitar que el administrador de paquetes lo anule.
Una solicitud de extracción está aumentando TasksMax
para los archivos systemd de ejemplo de docker, y un informe de error de Arch Linux está tratando de lograr lo mismo para el paquete. Hay una discusión adicional en el Foro de Arch Linux y en un informe de error de Arch Linux con respecto a lxc.
DefaultTasksMax
se puede utilizar en el [Manager]
sección en /etc/systemd/system.conf
(o /etc/systemd/user.conf
para servicios ejecutados por el usuario) para controlar el valor predeterminado para TasksMax
.
Systemd también aplica un límite para los programas que se ejecutan desde un shell de inicio de sesión. Estos predeterminados son 4096
por usuario (se incrementará a 12288
) y están configurados como UserTasksMax
en el [Login]
sección de /etc/systemd/logind.conf
.
La respuesta de cdauth es correcta, pero hay otro detalle que agregar.
En mi sistema Ubuntu 16.04 con systemd 229 y un kernel 4.3, se impuso un límite de 512 pid en los ámbitos de sesión de forma predeterminada, incluso cuando UserTasksMax se configuró en el nuevo valor predeterminado aumentado de 12288. Por lo tanto, cualquier ámbito de sesión de usuario se limitó a 512 subprocesos.
La única forma que encontré para eliminar el límite fue establecer DefaultTasksMax=unlimited
en /etc/systemd/system.conf
y systemctl daemon-reexec
(o reiniciar).
Puede verificar si esto está sucediendo emitiendo systemctl status
, eligiendo un ámbito de sesión y cat /sys/fs/cgroup/pids/user.slice/user-${UID}.slice/session-FOO.scope/pids.max
.