OOM katil dişlerini nasıl tekrar veririm?


12

Eskiden OOM katili aşırı agresif ve öldürdüğüm uygulamaları öldürdüğüm için lanetledim. Şimdi, bazı kötü davranışlar nedeniyle periyodik olarak sistemimi 15 dakika boyunca izlediğimden ve sonunda klavyeye cevap vermediği için bir güç kapanmasına başvurduğumdan, fark ettiğimden daha iyi olduğumu fark ettim o zamanlar.

OOM katili eski, kana susamış yollarına nasıl geri yüklerim?


1
Bir soruna neden olan programlara bir göz atın ve emebilecekleri bellek miktarını sınırlayınlimits.conf
LawrenceC

Yanıtlar:


4

Kullanabileceğiniz takas alanı miktarını azaltacağım. Tipik yüklemeler bu günlerde fiziksel bellek (veya bazen iki kat) kadar takas tahsis etmeye çalışır. Bu sorun şeyler ters gittiğinde, sistem diske bellek, ve arkasından şeyler "shuffle" teşebbüs bir ölüm-sarmal içine gider, ve yapıyor başlar böylece çoğunun o da yanıt verdiklerini zamanı yoktur kullanıcı girişine.

İyi günlerde, tüm işlemler diske (ve arkaya) değiştirildi, bu nedenle büyük takaslara ihtiyaç duyuldu.

Modern sanal bellek sistemlerinde, bellek (tüm süreçlerden ziyade) bloklar halinde değiştirilir, böylece daha küçük takaslarla başlayabilirsiniz. Senaryonuzda, işlemlerin öldürülmesi daha iyi olur, bu nedenle daha küçük takas ile çalıştırmak, OOM'un işlemleri daha kısa sürede öldürmeye başlamasına neden olur (sistemin diske / diskten çok fazla zaman harcamak yerine).


Sıfır takas var ve krom bir dizi veya bir şey iter daha sonsuz bir javascript döngü var benim sistem 20 + dakika boyunca kilitler. Sistemim işe yaramaz hale gelmeden önce tetiklemek için OOMK'a ihtiyacım var, sonra değil.
JasonWoof

0

İşte benim için işe yarayan:

echo 1 > /proc/sys/vm/oom_kill_allocating_task

Bu sadece bu bot için. Tarayıcınızın denetçisinin konsol sekmesinde aşağıdakileri çalıştırarak test edebilirsiniz:

a = []; while (true) { a.push(1); }

Bu ayardan memnunsanız, gelecekteki tüm botlar için varsayılan ayarı yapabilirsiniz:

echo "vm.oom_kill_allocating_task=1" >> /etc/sysctl.conf
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.