Masalahnya disebabkan oleh TasksMax
atribut systemd. Itu diperkenalkan di systemd 228 dan memanfaatkan subsistem pid cgroups, yang diperkenalkan di kernel linux 4.3. Batas tugas 512
dengan demikian diaktifkan di systemd jika kernel 4.3 atau yang lebih baru sedang berjalan. Fitur diumumkan di sini dan diperkenalkan dalam pull request ini dan nilai default ditetapkan oleh pull request ini. Setelah memutakhirkan kernel saya ke 4.3, systemctl status docker
menampilkan Tasks
baris:
# 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
Menyetel TasksMax=infinity
di [Service]
bagian dari docker.service
memperbaiki masalah. docker.service
biasanya dalam /usr/share/systemd/system
, tetapi juga dapat diletakkan/disalin di /etc/systemd/system
untuk menghindarinya ditimpa oleh manajer paket.
Permintaan tarik meningkat TasksMax
untuk file systemd contoh buruh pelabuhan, dan laporan bug Arch Linux sedang mencoba untuk mencapai hal yang sama untuk paket tersebut. Ada beberapa diskusi tambahan yang terjadi di Forum Arch Linux dan di laporan bug Arch Linux terkait lxc.
DefaultTasksMax
dapat digunakan di [Manager]
bagian dalam /etc/systemd/system.conf
(atau /etc/systemd/user.conf
untuk layanan yang dijalankan pengguna) untuk mengontrol nilai default untuk TasksMax
.
Systemd juga menerapkan batasan untuk program yang dijalankan dari shell login. Standar ini adalah 4096
per pengguna (akan ditingkatkan menjadi 12288
) dan dikonfigurasi sebagai UserTasksMax
di [Login]
bagian dari /etc/systemd/logind.conf
.
jawaban cdauth benar, tetapi ada detail lain untuk ditambahkan.
Pada sistem Ubuntu 16.04 saya dengan systemd 229 dan kernel 4.3, batas pid 512 diberlakukan pada cakupan sesi secara default bahkan ketika UserTasksMax disetel ke default baru yang ditingkatkan dari 12288. Jadi setiap cakupan sesi pengguna dibatasi hingga 512 utas.
Satu-satunya cara yang saya temukan untuk menghapus batas adalah dengan menyetel DefaultTasksMax=unlimited
di /etc/systemd/system.conf
dan systemctl daemon-reexec
(atau reboot).
Anda dapat memeriksa apakah ini terjadi dengan mengeluarkan systemctl status
, memilih cakupan sesi, dan cat /sys/fs/cgroup/pids/user.slice/user-${UID}.slice/session-FOO.scope/pids.max
.