Perché ricevo spesso questo errore "Impossibile allocare memoria"?


29

Sto usando Ubuntu 12.10 con Gnome-Classic. Ricevo questo errore frequentemente e con quasi tutti i programmi, grandi e piccoli. Quando provo ad aprirli, non si avviano e invece viene visualizzato un messaggio di errore che dice Could not launch 'Program' - Failed to fork child process (Cannot allocate memory). Questo non è stato un problema fino alle ultime settimane.

impossibile allocare memoria

Non riesco a discernere alcuna comunanza tra i programmi che causano questo errore. Sembra essere più una questione di tempo. Dopo che il mio computer è in esecuzione da un po ', da un giorno a qualche giorno, non riesco a avviare alcun nuovo programma.

L'unico modo che conosco per prevenire questo errore è riavviare il computer.

Perché ricevo questo errore e cosa devo fare per impedire che accada?


Ho eseguito il memtest disponibile dal menu di GRUB e non riporta errori, quindi non credo che si tratti di un errore hardware.

Ho anche corso sudo apt-get checke non sono stati trovati errori.

Ecco alcuni output della riga di comando richiesti:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          3945       3753        191          0        181        475
-/+ buffers/cache:       3096        848
Swap:         3813         60       3753

$ swapon -s
Filename                Type        Size    Used    Priority
/dev/sda6                               partition   3905532 61648   -1

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31421
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31421
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Questo è l'output di ps --sort -rss -eo rss,pid,command | headdopo che l'errore viene visualizzato:

$ ps --sort -rss -eo rss,pid,command | head
  RSS   PID COMMAND
1963400 2953 gnome-panel
155496 4029 banshee /usr/lib/banshee/Banshee.exe --redirect-log --play-enqueued
104944 15765 /opt/google/chrome/chrome --type=renderer --lang=en-US --force-fieldtrials=ForceCompositingMode/disable/GlobalSdch/global_enable_sdch/InfiniteCache/No/OmniboxDisallowInlineHQP/Standard/OmniboxHUPCreateShorterMatch/Standard/OmniboxHUPCullRedirects/Standard/OmniboxSearchSuggestTrialStarted2012Q4/2/OneClickSignIn/Standard/Prerender/PrerenderEnabled/SBInterstitial/V2/SpdyCwnd/cwndMin10/SpeculativePrefetching/Disabled/Test0PercentDefault/group_01/UMA-Dynamic-Binary-Uniformity-Trial/default/UMA-Session-Randomized-Uniformity-Trial-5-Percent/default/UMA-Uniformity-Trial-1-Percent/group_09/UMA-Uniformity-Trial-10-Percent/group_08/UMA-Uniformity-Trial-20-Percent/group_03/UMA-Uniformity-Trial-5-Percent/group_06/UMA-Uniformity-Trial-50-Percent/group_01/WarmSocketImpact/last_accessed_socket/ --enable-crash-reporter=ECE9000094D279FD3B14B35A74BF72CC,Ubuntu 12.10 --renderer-print-preview --disable-accelerated-2d-canvas --disable-accelerated-video-decode --channel=15654.5.89177240
78164 15654 /opt/google/chrome/chrome       
74912 19890 /usr/bin/python /usr/share/oneconf/oneconf-service
65476 12419 /usr/bin/perl /usr/bin/shutter
61096 19626 /usr/bin/python3.2 /usr/sbin/aptd
57832 15708 /opt/google/chrome/chrome --type=renderer --lang=en-US --force-fieldtrials=ForceCompositingMode/disable/GlobalSdch/global_enable_sdch/InfiniteCache/No/OmniboxDisallowInlineHQP/Standard/OmniboxHUPCreateShorterMatch/Standard/OmniboxHUPCullRedirects/Standard/OmniboxSearchSuggestTrialStarted2012Q4/2/OneClickSignIn/Standard/Prerender/PrerenderEnabled/SBInterstitial/V2/SpdyCwnd/cwndMin10/SpeculativePrefetching/Disabled/Test0PercentDefault/group_01/UMA-Dynamic-Binary-Uniformity-Trial/default/UMA-Session-Randomized-Uniformity-Trial-5-Percent/default/UMA-Uniformity-Trial-1-Percent/group_09/UMA-Uniformity-Trial-10-Percent/group_08/UMA-Uniformity-Trial-20-Percent/group_03/UMA-Uniformity-Trial-5-Percent/group_06/UMA-Uniformity-Trial-50-Percent/group_01/WarmSocketImpact/last_accessed_socket/ --enable-crash-reporter=ECE9000094D279FD3B14B35A74BF72CC,Ubuntu 12.10 --extension-process --renderer-print-preview --disable-accelerated-2d-canvas --disable-accelerated-video-decode --channel=15654.2.1555888673
42108  3030 /var/lib/dropbox/.dropbox-dist/dropbox

Sulla base dei suggerimenti nei commenti e nelle risposte, sembra possibile che il problema riguardi il pannello Gnome o le sue applet. Ecco le applet che ho in esecuzione:

Applet del pannello

Le applet sono Indicator Applet 12.10.1, System Monitor 3.5.92e "Area di notifica". e "data e ora", nessuna delle quali posso accedere al numero di versione per.

Ecco alcuni output della riga di comando più richiesti:

$ df -h
Filesystem                             Size  Used Avail Use% Mounted on
/dev/sda5                               19G   12G  6.4G  64% /
udev                                   2.0G  4.0K  2.0G   1% /dev
tmpfs                                  790M  1.1M  789M   1% /run
none                                   5.0M     0  5.0M   0% /run/lock
none                                   2.0G   84K  2.0G   1% /run/shm
none                                   100M     0  100M   0% /run/user
/dev/sda7                              384G  306G   59G  84% /home
mythbuntu@192.168.0.4:/home/mythbuntu  437G  360G   55G  87% /home/dave/Mythbuntu
$ sudo du -csh /var/log
15M /var/log
15M total

Ok, ho aggiunto la mia risposta qui sotto con alcuni "passi successivi".
Leland Kristie,

Da quanto tempo corri memtest? Gli errori vengono spesso visualizzati solo nei test successivi.
Guntbert,

@guntbert: ho lasciato memtestcorrere fino a quando non c'era un messaggio nella parte inferiore dello schermo che diceva che tutti i test erano stati completati.
Interrogatore

Ok, ho aggiunto di nuovo la mia risposta di seguito con alcuni "passi successivi".
Leland Kristie,

1
@AlistairBuxton: Hmmm ... dopo sette ore, con l'applet data / ora sul pannello, non sembra esserci alcun aumento di memoria. Tuttavia, una cosa diversa è che non è presente alcuna visualizzazione del tempo. Nell'applet data / ora è disponibile un'opzione per visualizzare il meteo, ma anche se l'ho selezionato, non viene visualizzata alcuna icona meteo. Il che sembra strano e potrebbe confermare che il problema è specificamente correlato alle funzioni meteorologiche nell'app per ora / data / meteo.
Interrogante

Risposte:


33

Alcuni processi perdono memoria. Per avere un'idea di quale processo potrebbe essere, eseguire

ps --sort -rss -eo rss,pid,command | head

Ho aggiunto l'output al comando alla mia domanda. Ho catturato questo output dopo aver iniziato a ricevere l'errore.
Interrogatore

Molto probabilmente il problema si trova con uno degli indicatori utilizzati meno frequentemente che si sta utilizzando, ad esempio, quello a sinistra che assomiglia a una lama circolare o l'indicatore meteorologico. Rimuovere ciascuno di questi a turno per vedere se ciò risolve il problema.
jdthood,

Si è scoperto che era l'indicatore del tempo. Vedi la risposta dell'OP.
jdthood,

19

Ti suggerisco di avviare il processo di risoluzione dei problemi testando la RAM con l'utilità integrata fornita nel menu di avvio di GRUB ed eliminando "RAM errata" come fonte del problema.

Test di memoria Test di memoria

Memtest86 + Memtest86 +

Quindi, controllare le dipendenze interrotte del sistema da un terminale con sudo apt-get check e, se vengono rilevati errori, eseguire nuovamente il comando come sudo apt-get check -f per provare a correggerli.

Se per favore, prova questi passaggi e riporta qui con tutti i risultati.

Leland


Ciao Dave,

Ok allora - abbiamo escluso l'hardware come fonte del problema.

Quindi, esaminiamo l'utilizzo della memoria e le impostazioni di processo sul tuo computer; eseguire questi comandi da un prompt del terminale:

Visualizza la quantità di memoria libera e utilizzata

libero

Visualizza il riepilogo dell'utilizzo dello swap

swapon -s

Visualizza i limiti delle risorse del processo utente

ulimit -a

Lo screenshot seguente proviene da un'installazione pulita di 10.04LTS. I dettagli da notare dal primo e dal secondo elemento cerchiati di giallo sono nella colonna "usato", che mostra la memoria e lo spazio di scambio disponibili per il sistema operativo da usare, cioè non sono tutti esauriti.

L'elemento in cerchio giallo in basso non mostra limiti al numero di processi utente, ad esempio gFTP o altre applicazioni, che il sistema operativo consentirà all'utente di eseguire.

Se per favore, prova questi passaggi e riporta qui con tutti i risultati.

Leland

Utilizzo della memoria e limiti delle risorse di processo


Ciao Dave,

I risultati restituiti da ps --sort -rss -eo rss, pid, comando | head che hai pubblicato mostra il processo del pannello di gnome utilizzando circa 1,8 GB di memoria, il che sembra un po 'insolito - che sembra usare molta memoria per l'ambiente desktop.

Puoi ottenere una ripartizione della memoria che il processo del pannello di gnome sta usando eseguendo i comandi cerchiati nello screenshot qui sotto e vedere dove sta andando tutto - che potrebbe rivelare qualcosa che si distingue.

Per fare un confronto, il processo del pannello gnome sulla mia macchina virtuale sta usando 48 MB di RAM - concesso, tuttavia, la macchina 10.04 in questi screenshot è una macchina virtuale che sto usando solo per i test e non sul mio desktop.

pmap dal processo gnome-panel

Detto questo, avanzerò il prossimo passo: isolare il problema da "qualcosa" nell'ambiente desktop di Gnome.

Per provarlo, prova a installare l'area di lavoro al plasma di KDE che troverai in Ubuntu Software Center.

ambiente desktop kde-plasma

Una volta installato, riavvia il computer e accedi con una sessione di KDE invece di Gnome, esegui le tue applicazioni nel miglior modo possibile (il desktop è completamente diverso) per vedere se l'errore "Impossibile allocare memoria" si ripete qui.

Per essere chiari, sarai in grado di eseguire gli stessi "test" della CLI in un ambiente KDE come abbiamo fatto nell'ambiente Gnome e di essere in grado di confrontare i risultati nell'esame del comportamento del computer tra i due.

In KDE, l'applicazione console che stai cercando è xterm che puoi trovare dalla finestra di dialogo Cerca nel menu principale.

xterm pid e pmap per plasma-desktop

Darò un po 'di fiducia qui e dirò che penso che siamo collettivamente sulla strada giusta per isolare il problema.

Leland


Grazie per aver risposto. Ho eseguito sia il memtest che i apt-getcomandi che hai suggerito ed entrambi non hanno segnalato errori. Ho aggiornato la mia domanda di conseguenza.
Interrogatore

Ho aggiunto alla mia domanda l'output dei comandi richiesti. L'unica cosa che noto è che sotto di max user processesessa non si dice unlimitedcome il tuo. Il mio ha il numero 31421.
Interrogatore

1
Ciao Dave, una breve nota per farti sapere che sarò in grado di risponderti di nuovo entro il fine settimana. Il mio lavoro quotidiano mi tiene occupato la sera e quindi ho pensato di lasciarti semplicemente un messaggio di cortesia qui per farti sapere che non sono scomparso. Leland
Leland Kristie

Oh, a proposito, ho provato a cambiare il massimo dei processi utente fino a 1024 e non sono riuscito a riprodurre l'errore in questo modo ... ho pensato di menzionare che ho provato.
Leland Kristie,

Ho installato il desktop KDE, ma attualmente sto aspettando di ricominciare a vedere l'errore, quindi eseguirò il pmapcomando e pubblicherò qui l'output. Ho anche fatto un po 'di ricerche e ho scoperto che ci sono alcune menzioni di perdite di memoria nel pannello di gnome, quindi sembra un probabile sospetto.
Interrogatore

3

Dopo aver sperimentato di averlo acceso e spento negli ultimi due giorni, sono fiducioso nel dire che il problema era una perdita di memoria nella porzione dell'indicatore del tempo dell'applet data e ora. Quando viene visualizzato il tempo, l'utilizzo della memoria aumenta nel tempo. Quando il tempo non viene visualizzato, la memoria non aumenta.

Immagino che questo sia un bug con l'indicatore meteorologico che dovrebbe essere segnalato, ma la segnalazione di bug su Launchpad è un processo troppo complicato per me da intraprendere.


Apri un terminale sul tuo computer ed esegui "apport-bug" che richiederà informazioni e archivia la segnalazione di bug per te.
jdthood,

2
@jdthood: questa è la teoria di quanto dovrebbe essere facile. La realtà è che la prima schermata di opzioni non descrive il mio problema, e l'opzione "altro" mi dice solo che ho bisogno di un nome di pacchetto e poi si chiude. Simile a questo .
Interrogante

Apri bugs.launchpad.net/ubuntu/+source/indicator-weather in un browser, fai clic su "Segnala un bug" e segui le istruzioni. Una volta che conosci il numero assegnato al rapporto, esegui "apport-collect <bugnumber>" per caricare le informazioni rilevanti sulla macchina interessata.
jdthood,

1

Se stai riscontrando questo problema con Ruby on Rails con Digital Ocean , è probabile che tu abbia troppa RAM. Prova ad aumentare la RAM da 512 MB a 1 GB , che mi ha risolto il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.