GNU/Linux >> Linux Esercitazione >  >> Linux

Qualcosa consuma tutta la memoria (sospetto che si verifichi una perdita di memoria su alcune app). Come rilevare cosa?

Soluzione 1:

In esecuzione top in modalità batch per segnalare periodicamente le dimensioni della memoria può essere utilizzato per vedere chi sta utilizzando la memoria quando le cose vanno male. Eseguire sar in modalità batch dovrebbe fornire una buona diagnostica sull'utilizzo della memoria e sull'I/O correlato. Esecuzione di munin per monitorare il sistema dovrebbe darti un grafico con buoni dettagli su quale memoria viene utilizzata. Questo può aiutare molto.

È possibile utilizzare limits.conf per limitare la dimensione massima del core dei programmi. Impostato correttamente, questo dovrebbe uccidere tutti i programmi che perdono memoria. Funziona con il modulo pam_limits. I limiti possono anche essere impostati con ulimits comando.

Stai eseguendo alcuni programmi che potrebbero utilizzare grandi quantità di memoria. Alcune cose che potresti guardare includono.

  • Applicazioni mal programmate in esecuzione sotto apache2 può perdere memoria. Dovresti vedere aumentare la dimensione della memoria quando ciò accade. Puoi ottimizzare apache2 per riciclare i bambini dopo un certo numero di utilizzi impostando MaxRequestsPerChild a 100 o giù di lì. Se questo risolve il problema, è necessario risolvere la perdita. Prima guarderei questo.
  • MySQL potrebbe provare a caricare i dati in memoria. Se hai molti dati in memoria, questo potrebbe causare qualche problema, ma non dovrebbe essere così drammatico come stai vedendo.
  • Se hai un tmpfs grande file system montato, potresti perdere memoria se i file non vengono eliminati quando vengono utilizzati. Anche i file di grandi dimensioni e di lunga durata possono essere un problema.
  • Se il problema si verifica all'incirca alla stessa ora del giorno, potresti avere un programma programmato che perde memoria.
  • Se hai un programma che alloca memoria condivisa, ma non la rilascia prima di uscire, avrai una perdita di memoria relativamente invisibile. Se la memoria condivisa è bloccata nella memoria, potrebbe forzare lo scambio. La quantità di memoria condivisa disponibile è in genere relativamente limitata.
  • Il bundle liquidsoap+icecast potrebbe incorrere in problemi di buffering che utilizzano la memoria. Non ho usato questa combinazione, quindi non sono sicuro di come sembrerebbe.

Utilizzo normale della memoria:la memoria libera non è qualcosa che desideri molto. Se il tuo sistema è attivo da molto tempo e ha molta memoria libera, qualcosa non va. Ogni volta che leggi o scrivi un file, i blocchi andranno nella cache del buffer. Ciò ridurrà la tua memoria libera ed è una buona cosa. Il sistema manterrà abbastanza spazio libero per avviare alcuni programmi senza cercare memoria altrove. Poiché molti programmi vengono eseguiti rapidamente, la loro memoria verrà restituita al pool libero quando smettono di funzionare.

Quando leggi un file che si trova nella cache del buffer, non è richiesto alcun accesso al disco e la lettura viene risolta dalla cache del buffer. Le scritture utilizzano un meccanismo simile. Se il tuo sistema ha bisogno di memoria, la cache del buffer è uno dei primi posti che viene utilizzato. La maggior parte dei buffer può essere rilasciata immediatamente.

Se hai una perdita di memoria, vedrai che la memoria libera e i buffer iniziano entrambi a ridursi. Questo non è ancora un problema grave, poiché la memoria trapelata dovrebbe eventualmente essere spostata nello spazio di scambio. Il tuo sistema continuerà a funzionare correttamente fino a quando non riempirai lo spazio di swap e ridurrai lo spazio libero rimanente fino al punto in cui i programmi non possono essere avviati. È tipico che venga utilizzata una piccola quantità di spazio di scambio.

Soluzione 2:

Puoi usare questo comando per vedere le prime 10 applicazioni relative all'utilizzo della RAM:

ps -A --sort -rss -o comm,pmem | head -n 11

A volte questo comando ti aiuta se sono stati generati molti processi secondari:

ps auxf

In questo modo puoi vedere quali processi appartengono insieme.

Soluzione 3:

Niente sta davvero usando quella memoria in termini di applicazioni.

Devi detrarre il valore 'cached' che rappresenta la cache della pagina per avere un'idea migliore di quale sia il tuo effettivo utilizzo della memoria in termini di utilizzo del programma.

Fondamentalmente questa è una buona gestione della memoria e questo è idealmente quello che vuoi.

Vedi il link qui per maggiori informazioni:http://www.linuxatemyram.com/


Linux
  1. Come calcolare l'utilizzo della memoria in Linux usando sar, ps e free

  2. Cos'è ioremap()

  3. Come sapere se è disponibile memoria sufficiente per distribuire una nuova applicazione su una macchina Linux?

  4. Linux:scopri quale processo sta usando tutta la RAM?

  5. Come ottenere la percentuale di utilizzo della memoria con vmstat?

Come controllare l'utilizzo della memoria in Linux

Come eliminare i buffer di memoria e la cache in Linux

Come interpretare l'utilizzo della memoria top/htop?

Come registrare il consumo di memoria su Linux?

Come eliminare tutti i file in una directory tranne alcuni?

Chrome consuma tutta la RAM e blocca il sistema