GNU/Linux >> Belajar Linux >  >> Linux

Membuat utas gagal dengan "Sumber sementara tidak tersedia" dengan kernel 4.3

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 .


Linux
  1. Pelacakan kernel dengan trace-cmd

  2. Analisis kernel Linux dengan ftrace

  3. Pertama kali dengan Linux:30 kisah instalasi

  1. Membuat volume logis di Linux dengan LVM

  2. Linux – Terminal Gnome Gagal Memulai?

  3. Perintah Docker menggantung tanpa respons

  1. Mengapa saya jatuh cinta dengan Antergos Linux

  2. Mencatat Hanya File yang Ditransfer Dengan Rsync?

  3. Debugging Kernel Linux dengan QEMU