Arch Linux'ta dock sunucusu çalıştırıyorum (çekirdek 4.3.3-2) birkaç kapsayıcılı. Son yeniden başlatmamdan beri, hem docker sunucusu hem de kapsayıcılardaki rastgele programlar, iş parçacığı oluşturulamaması ya da (daha az sıklıkta) çatalı olamayacağına dair bir mesajla çöküyor. Özel hata mesajı, programa bağlı olarak farklılık gösterir, ancak çoğu belirli hatadan söz ediyor gibi görünmektedir Resource temporarily unavailable
. Bazı örnek hata mesajları için bu yazının sonuna bakın.
Şimdi bu hata mesajını alan birçok insan var ve onlara birçok cevap var. Gerçekten sinir bozucu olduğunu herkesin sorunu çözülecek nasıl spekülasyon gibi görünüyor, ama kimse nasıl işaret gibi görünüyor tanımlamak mevcut sorunun birçok olası nedenlerin hangisinin.
Hatanın bu 5 olası nedenini ve sistemimde bulunmadığını nasıl doğrulayacağımı topladım:
/proc/sys/kernel/threads-max
( Kaynak ) 'da konfigüre edilen iplik sayısında sistem çapında bir sınır vardır . Benim durumumda bu ayarlanır60613
.- Her iş parçacığı yığında biraz yer tutar. Yığın büyüklüğü sınırı
ulimit -s
( kaynak ) kullanılarak yapılandırılır . Eskiden kabuğumun sınırı vardı8192
, ama* soft stack 32768
içine koyarak arttırdım/etc/security/limits.conf
, bu yüzdenulimit -s
şimdi geri döndü32768
. Docker işlemi için bunu daLimitSTACK=33554432
ekleyerek arttırdım/etc/systemd/system/docker.service
( kaynak ve limanın bir docker konteynerinin içine bakarak/proc/<pid of docker>/limits
veulimit -s
içinde çalıştırarak limitin geçerli olduğunu doğruladım . - Her iş parçacığı biraz hafıza alır. Bir sanal bellek sınırı kullanılarak yapılandırılır
ulimit -v
. Sistemimde ayarlanmışunlimited
ve 3 GB'lık belleğimin% 80'i boş. - Kullanılan işlem sayısının bir sınırı vardır
ulimit -u
. İplikler bu durumda süreçler olarak sayılır ( kaynak ). Sistemimde, sınır ayarlandı30306
ve liman işçisi arka plan programı ve liman işçisi konteynırları için sınır1048576
. Çalışmakta olan iş parçacığı sayısı çalıştırarakls -1d /proc/*/task/* | wc -l
veya çalıştırarakps -elfT | wc -l
( kaynak ) bulunabilir. Benim sistemimde700
ve arasındalar800
. - Açık dosya sayısında bir sınırlama vardır; bunlar bazı kaynaklara göre de konu oluşturulurken de geçerlidir. Sınır kullanılarak yapılandırılır
ulimit -n
. Sistemimde ve docker'ın içinde, limit ayarlandı1048576
. Açık dosyaların sayısılsof | wc -l
( kaynak ) kullanılarak bulunabilir , sistemim hakkında30000
.
Görünüşe göre son yeniden başlatmadan önce çekirdek 4.2.5-1 çalıştırıyordum, şimdi 4.3.3-2 çalıştırıyorum. 4.2.5-1 seviyesine düşürülmesi tüm sorunları düzeltir. Sorun söz Diğer yayın verilmiştir bu ve bu . Arch Linux için bir hata raporu açtım .
Çekirdekte buna neden olabilecek neler değişti?
İşte bazı örnek hata mesajları:
Crash dump was written to: erl_crash.dump
Failed to create aux thread
Jan 07 14:37:25 edeltraud docker[30625]: runtime/cgo: pthread_create failed: Resource temporarily unavailable
dpkg: unrecoverable fatal error, aborting:
fork failed: Resource temporarily unavailable
E: Sub-process /usr/bin/dpkg returned an error code (2)
test -z "/usr/include" || /usr/sbin/mkdir -p "/tmp/lib32-popt/pkg/lib32-popt/usr/include"
/bin/sh: fork: retry: Resource temporarily unavailable
/usr/bin/install -c -m 644 popt.h '/tmp/lib32-popt/pkg/lib32-popt/usr/include'
test -z "/usr/share/man/man3" || /usr/sbin/mkdir -p "/tmp/lib32-popt/pkg/lib32-popt/usr/share/man/man3"
/bin/sh: fork: retry: Resource temporarily unavailable
/bin/sh: fork: retry: No child processes
/bin/sh: fork: retry: Resource temporarily unavailable
/bin/sh: fork: retry: No child processes
/bin/sh: fork: retry: No child processes
/bin/sh: fork: retry: Resource temporarily unavailable
/bin/sh: fork: retry: Resource temporarily unavailable
/bin/sh: fork: retry: No child processes
/bin/sh: fork: Resource temporarily unavailable
/bin/sh: fork: Resource temporarily unavailable
make[3]: *** [install-man3] Error 254
Jan 07 11:04:39 edeltraud docker[780]: time="2016-01-07T11:04:39.986684617+01:00" level=error msg="Error running container: [8] System error: fork/exec /proc/self/exe: resource temporarily unavailable"
[Wed Jan 06 23:20:33.701287 2016] [mpm_event:alert] [pid 217:tid 140325422335744] (11)Resource temporarily unavailable: apr_thread_create: unable to create worker thread