Herhangi bir komutu çalıştırmak Ubuntu Sunucusunda “Bellek ayrılamıyor” döndürüyor


16

Ubuntu 14.04 kullanıyorum. Son zamanlarda, sudo ayrıcalıklarına sahip kullanıcımla SSH üzerinden giriş yaptığımda, çalıştırdığım her komut bir “Bellek ayrılamıyor” hatasıyla sonuçlanıyor. İşte konsolumda denediğim birkaç tane

myuser@mymachine:~$ whoami
-bash: fork: Cannot allocate memory
myuser@mymachine:~$ uname -a
-bash: fork: Cannot allocate memory

Denememe sudo reboot nowrağmen yukarıdaki hatayı alıyorum, bu yüzden örneğimin kilidini açmayı deneyebileceğim başka bir şey bilmiyorum. Önemli olursa ana bilgisayar DigitalOcean'dır.

Düzenleme: Burada verilen cevap / öneri "serbest" çıktısıdır

myuser@mymachine:~$ free
-bash: fork: Cannot allocate memory

Yanıtlar:


12

Çözüm

Hata mesajlarında belirtildiği gibi, makinenizde bellek kalmadı. Bu birkaç nedenden ötürü olabilir, ancak temel olarak, bir şey tüm belleğinizi tüketiyor ve temel komut kullanımı için bile herhangi bir sol bırakmıyor.

Damlacıklarınızı yeniden başlatmanızı öneririm (sadece istemci kontrol panelinize gidin ve "Yeniden Başlat" ı seçin), sshve sonra topveya çalıştırın htop. Bellek kullanımına dikkat edin ve hangi işlemin tüm belleği kullandığını görün. Oradan, ikisini de deneyin

  1. Hatalı programı / işlemi öldürme / kaldırma

    UYARI : İşlemin önemli bir sistem işlemi olup olmadığını araştırmak için LÜTFEN ! Bir sistem süreci hafıza sorunlarına neden oluyorsa, sadece öldürmeyin, üzerinde araştırma yapın ve bununla başa çıkmak için belirli yollar yapın.
  2. Bu programın / işlemin yapılandırmasını tüm belleğinizi tüketmeyecek şekilde değiştirmek.

Sorunun tekrar olmasını önlemek için öneriler

  • Yapılacak iyi bir şey takas belleği eklemektir , çünkü bitiyorsa daha fazla bellek ayırır.
  • Programları her yüklediğinizde, istemeden (bellekte yemek yemek gibi) performans göstermeyecek şekilde doğru yapılandırdığınızdan emin olun.
  • Her paket eklediğinizde veya temel olarak yeni bir şey yapılandırıldıktan sonra, geçerli programlarla ne kadar bellek kullandığınızı görmek için htopveya ile kontrol edin top. Neredeyse hepsini kullandığınızı fark ederseniz, gereksiz programları / işlemleri kaldırarak ve kaldırarak bunları temizlemeyi deneyin.
  • Otomatik olarak başlatılmakta olan bir şey varsa (elbette sistem işlemlerinin yanı sıra!) Tanımadığınız veya otomatik olarak başlatılmasını istemediğiniz bir şey varsa, kaldırın! Ancak her zaman, bir işlemi öldürmeden / silmeden önce ne olduğunu araştırın, çünkü önyükleme prosedürleri veya sistem işlevleri vb. İçin gerekli olabilir.

7

Yeniden başlatmadan bu durumdan çıkmak için, OOM katilini manuel olarak aşağıdaki şekilde tetikleyebilirsiniz :

echo 1 > /proc/sys/kernel/sysrq
echo f > /proc/sysrq-trigger
echo 0 > /proc/sys/kernel/sysrq

Referans


Bu komutları destekleyen belgeleriniz var mı? Neden sadece sudo sysctl -w vm.oom_kill_allocating_task=1veya sürekli açık/etc/sysctl.conf kalmıyorsunuz ?
Pablo Bianchi

1
Bir fark yaratacak gibi görünmüyor, eğer herhangi bir işlem bellek ayırmaya çalışmadığı ve hiçbir ek işlem başlatılamadığı için bu hareketsiz kalırsa sistem gerçek bir OOM koşuluna çarpmaz. Ve yarı ilgisiz ama bu durumda bir kez sudo veya sysctl kullanamazsınız.
Luke F

Bu benim için çalıştı. Nasıl olduğunu bilmiyorum, umrumda değil. Bunu çalıştırmadan sudo rebootönce kaçamadım bile . Teşekkürler!
boulder_ruby

0

Kabul edilen cevabı tamamladıktan sonra göz önünde bulundurmanız gereken bir şey daha vardır: Sisteminizde dosya tanıtıcıları veya hatta yuva arabellekleri bitebilir ve aynı hatayı verirken hala çok fazla bellek olabilir. Bu, paylaşılan barındırma bu tür sınırlar koyarsa özellikle doğrudur. OpenVZ sistemlerinde,

# cat / proc / user_beancounters

Bu size en sağdaki sütunda ilk taşmaları verecektir. Bu doğruysa, daha büyük bir barındırma paketine geçin veya en olası suçluyu avlayın: mysql veya mariadb veritabanı, hatalı bir PHP uygulamasının varlığında saniyede yüzlerce dosya sızdırabilir.

Bu durum, web sunucunuzun internete açık olması ve kullanıcı adı / şifre girişlerini kabul etmesi durumunda da olabilir: Eğer fail2ban çalışıyor olsa bile, aynı zamanda çok fazla kaynak tüketen bir dağıtılmış sözlük sonu çekmiş olabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.