GNU/Linux >> LINUX-Kenntnisse >  >> Linux

-bash:Fork:Speicher kann nicht zugewiesen werden

Ich hatte dieses Problem auch mit meinem Ubuntu 14.04-Desktop.

 free -m

Sogar dieser grundlegende Befehl zeigte den Fehler „Speicher kann nicht zugewiesen werden“. Bei der Untersuchung wurde festgestellt, dass das System den gesamten Speicher für das Caching verwendet und keinen Speicher freigibt. Dies wird als „Cache Ballooning“ bezeichnet und durch Löschen des Cache behoben.


In meinem Fall ging dem Betriebssystem die PID anstelle des Speichers aus, die Fehlermeldung war jedoch dieselbe.

Der Standardwert der maximalen PID-Nummer ist 32768, um den Wert anzuzeigen, führen Sie

aus
cat  /proc/sys/kernel/pid_max

Um die maximale PID-Nummer zu ändern, führen Sie

aus
echo 100000 > /proc/sys/kernel/pid_max

In meinem Szenario war die Hauptursache, dass ein Java-Prozess mehr als 18.000 Threads hervorgebracht hat (im Linux-Kernel ist Thread im Wesentlichen ein Prozess), um die Thread-Anzahl jedes Prozesses herauszufinden, führen Sie

aus
ps -eo nlwp,pid,args --sort nlwp

Linux
  1. Grep:Speicher erschöpft?

  2. „mlock failed:Cannot allocate memory“ lvcreate-Befehlsfehler in CentOS/RHEL 7

  3. „systemd-udevd:Cannot allocate memory“ und „A start job is running for dev-mapper-\x2droot.device“ – CentOS/RHEL 7-Startproblem

  4. Was ist ioremap()

  5. Rufen Sie die Unterprozess-ID in Java ab

Linux-Speichernutzung

Was ist NVM (nicht flüchtiger Speicher)?

PHP-Speicherlimit

Wie behandelt fork() insbesondere dynamisch zugewiesenen Speicher von malloc() in Linux?

Speicherauslastung des TOP-Befehls

Speicher kann nicht zugewiesen werden, obwohl kein Prozess Speicher zu verbrauchen scheint