Come faccio a impedire il block di Linux quando non è in memory?

Oggi ho (accidentalmente) eseguito un programma sulla mia scatola Linux che ha utilizzato rapidamente molta memory. Il mio sistema si bloccò, divenne irresistibile e quindi non riuscivo a uccidere il reato.

Come posso evitare questo in futuro? Non può alless mantenere un nucleo reattivo o qualcosa in esecuzione?

  • OOM-Killer, joss e panico del kernel
  • Perché le applicazioni in un contenitore LXC contenente memory limitano la scrittura di file di grandi size sul disco che viene ucciso dall'OOM?
  • Come trovare quale cgroup ha causato OOM?
  • Come get il killer di OOM di Linux per non uccidere il mio process?
  • Risposta personalizzata LInux OOM
  • OOM nonostante la memory disponibile (cache)
  • Perché non posso placare tanto memory quanto i rapporti "gratuiti" come gratuiti?
  • Redis mangia sempre più memory
  • 4 Solutions collect form web for “Come faccio a impedire il block di Linux quando non è in memory?”

    Scommetto che il sistema non è effettivamente "bloccato" (nel senso che il kernel è appeso), ma piuttosto era solo molto non rispondere. Le probabilità sono che è stato solo swapping molto duro, causando performance interattive e il rendimento del sistema di cadere come una pietra.

    È ansible distriggersre il swap, ma questo solo modifica il problema da performance scarse ai processi uccisi OOM (e tutto il divertimento che provoca), insieme a ridotte performance a causa della minore disponibilità di cache del disco.

    In alternativa, è ansible utilizzare i limiti di risorse per process (comunemente denominati rlimit e / o ulimit ) per rimuovere la possibilità di un singolo process che prende una ridicola quantità di memory e provoca lo scambio, ma che solo ti spinge in un territorio divertente con processi che muoiono in momentjs scomodi perché volevano un po 'più memory che il sistema era disposto a dare loro.

    Se sapevi che stavi per fare qualcosa che potrebbe causare un massiccio utilizzo della memory, probabilmente potresti scrivere un programma di wrapper che ha fatto un mlockall() e poi ha eseguito il tuo shell; che la conserverebbero in memory e sarebbe la cosa più vicina a "mantenere un nucleo reattivo" che probabilmente si otterrà (perché non è che la CPU sia inutilizzata che è il problema).

    Personalmente, mi iscrivo al metodo "non fare stupidi" del controllo delle risorse. Se hai la radice, puoi fare each tipo di danno a un sistema, e facendo tutto ciò che non conosci i probabili risultati è un business rischioso.

    Come detto sopra in commento da parte di Tronic, è ansible call direttamente OOM killer (fuori dalla memory killer) direttamente dalla combinazione di tastiera SysRqF .

    Il tasto SysRq è generalmente combinato con il tasto PrtSc sulle tastiere.

    L'assassino di OOM uccide alcuni processi (-es) e il sistema diventa reattivo.

    PS: Questo mi ha aiutato molto. Sono d'accordo con l'opinione che questo è il più utile suggerimento su quel problema se è causato da Chrome o qualsiasi altro software di memory avido. Ma è necessario tenere presente che il killer OOM potrebbe uccidere un process molto importnte, utilizzarlo con attenzione.

    Questo è qualcosa di particolarmente difficile da prevenire. È perché il kernel comincia a scambiarsi. Una soluzione è quella di trasformare lo swap. Quando il sistema esaurisce la memory, anziché avviare lo scambio, il kernel ucciderà alcuni processi; di solito raccoglie il process corretto per uccidere, ma è comunque meglio uccidere un process random che avere un sistema non rispondente.

    Questa può essere una soluzione particolarmente buona per i server, perché i server spesso dispongono di RAM sufficiente e quando cominciano ad utilizzare lo spazio di swap significa che qualcosa è sbagliato comunque. Tuttavia, i desktop di solito hanno bisogno dello spazio di swap, quindi penso che non esista una buona soluzione per i desktop. Spesso sparo lo spazio di swap nei server, specialmente quando c'è il sospetto di una perdita di memory.

    Questo è un bug noto fin dal 2007 – vedere il congelamento di sistema sull'uso di memory elevata .

    In questa situazione, Windows visualizza una window di dialogo che avverte l'utente per chiudere una o più applicazioni.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.