Sie sollten sich nicht auf den OOM-Killer verlassen, um Ihre Prozesse zu verwalten. Der OOM-Killer ist ein Maß für den letzten Ausweg, wenn die einzige Alternative ein Systemabsturz ist. Beispielsweise wurde der gesamte Cache- und Plattenpufferspeicher geleert und festgeschrieben, alles, was ausgelagert / verworfen werden kann, wird verarbeitet, und Sie haben immer noch nicht genug Speicher ... Offensichtlich möchten Sie nicht, dass Ihr laufendes System diesen Zustand erreicht.
Aufgrund der strengen Auflagen, unter denen der OOM-Killer arbeitet (kann nicht mehr Speicher zuweisen, kann er nicht in andere Prozesse vertauschen usw.), werden dadurch Prozesse abgebrochen, die Sie nicht beenden möchten, um den Speicherdruck abzubauen.
Ich denke, wenn Ihr System nicht über genügend Arbeitsspeicher verfügt, müssen Sie mehr Arbeitsspeicher oder Auslagerungsspeicher hinzufügen, je nachdem, ob Ihnen der physische Arbeitsspeicher oder der gesamte virtuelle Arbeitsspeicher ausgeht.
Wenn Sie jedoch über einige unkontrollierte Prozesse verfügen, die aufgrund eines Speicherverlusts oder eines anderen Fehlers von Zeit zu Zeit zu viel Speicher verbrauchen, können Sie dies auf andere Weise steuern:
Legen Sie
ulimit -m
vor dem Starten des fehlerhaften Prozesses fest, und begrenzen Sie, wie viel Speicherplatz dieser Prozess zuordnen kann.Starten Sie den fehlerhaften Prozess ordnungsgemäß nach einem Zeitplan über cron neu, wenn ein Speicherverlust vorliegt und er ziemlich vorhersehbar ist.
Auf jeden Fall ist der OOM-Killer nicht dein Freund, sondern eine lose Kanone: - /