Minneanalyse og justering av søppelinnsamling
Finn årsaker til minnevekst, undersøk heap-ene per prosess og juster Erlangs søppelinnsamling for å holde noder som kjører lenge, sunne.
Minneanalyse og justering av søppelinnsamling er en gratis leksjon i Erlang OTP: programmering av distribuerte og feiltolerante systemer på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Erlang OTP: programmering av distribuerte og feiltolerante systemer, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Erlang OTP: programmering av distribuerte og feiltolerante systemer inneholder totalt 4 leksjoner.
Hvorfor minne er viktig
Erlang-noder kan kjøre i månedsvis. En liten lekkasje per prosess eller en postkasse uten øvre grense vokser ubemerket til noden blir avsluttet av operativsystemet. Innsyn i minnebruken er avgjørende.
Minne for hele systemet
erlang:memory/0 returnerer en oversikt over total minnebruk, prosesser, atomer, binærdata, ETS og mer. Følg med på kategoriene som vokser over tid.
erlang:memory().Inspeksjon per prosess
process_info/2 viser blant annet heapen og meldingskølengden til én prosess – noe som er viktig for å finne synderen.
process_info(Pid, [memory, message_queue_len, heap_size]).Postkassefellen
Hvis en prosess mottar meldinger raskere enn den behandler dem, vokser postkassen uten grense. En stor message_queue_len er det klassiske tegnet på en overbelastet konsument.
Refc-lekkasjer i binærdata
Store binærdata bruker referansetelling og deles utenfor heapen. En prosess som holder på en liten delbinær, kan holde på en enorm overordnet binærdata. Følg nøye med på minnekategorien binary.
Finne de største synderne
Sorter alle prosesser etter minnebruk for å finne lekkasjer raskt.
lists:sort(fun({_,A},{_,B}) -> A > B end,
[{P, element(2, process_info(P, memory))} || P <- processes()]).Slik fungerer Erlang GC
Hver prosess har sin egen private heap og får utført søppelrydding uavhengig av de andre – det finnes ingen global stop-the-world-pause. Innsamlingen kjører når heapen til en prosess blir full.
Utløse GC manuelt
For en prosess De mistenker holder på søppel, kan De tvinge frem en innsamling og måle på nytt.
erlang:garbage_collect(Pid),
process_info(Pid, memory).Justere heapen
Oppstartsalternativer som min_heap_size og fullsweep_after justerer GC for aktive prosesser, med et kompromiss mellom minnebruk og færre innsamlinger.
spawn_opt(fun work/0, [{min_heap_size, 1000}, {fullsweep_after, 10}]).Hibernasjon
Prosesser som er inaktive, kan kalle hibernate for å komprimere heapen til minimum og frigjøre minne frem til neste melding kommer – nyttig for mange forbindelser som for det meste er inaktive.
proc_lib:hibernate(?MODULE, loop, [State]).Overvåke ETS-tabeller
ETS-tabeller ligger utenfor prosessheaper og krymper ikke automatisk. En voksende minnekategori for ets betyr ofte foreldede rader. Rydd dem bort med jevne mellomrom, eller bruk tabeller med begrenset størrelse.
ets:info(my_table, memory).Kort kontroll
Test kunnskapen Deres om minnejustering.
Oppsummering
De har lært å analysere og finjustere minne:
erlang:memory/0gir en oversikt over hele systemetprocess_info/2inspiserer heapen og postkassen til hver prosess- Voksende postkasser og fastlåste binærdata er vanlige kilder til minnelekkasjer
- Hver prosess søppelsamles uavhengig av de andre; det forekommer ingen global pause
- Finjuster med spawn-alternativer, og bruk
hibernatefor inaktive prosesser
Lær deg Erlang med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Minneanalyse og justering av søppelinnsamling» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Erlang OTP: programmering av distribuerte og feiltolerante systemer, inkludert «Minneanalyse og justering av søppelinnsamling», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Erlang OTP: programmering av distribuerte og feiltolerante systemer inneholder totalt 4 leksjoner.
Hva lærer jeg i «Minneanalyse og justering av søppelinnsamling»?
Finn årsaker til minnevekst, undersøk heap-ene per prosess og juster Erlangs søppelinnsamling for å holde noder som kjører lenge, sunne. Du øver på Erlang OTP: programmering av distribuerte og feiltolerante systemer med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Erlang OTP: programmering av distribuerte og feiltolerante systemer?
Ingen tidligere erfaring er nødvendig. Erlang OTP: programmering av distribuerte og feiltolerante systemer på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Minneanalyse og justering av søppelinnsamling»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Erlang OTP: programmering av distribuerte og feiltolerante systemer-leksjonen?
Ja. Alle Erlang OTP: programmering av distribuerte og feiltolerante systemer-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Teknikker for Erlang-profilering
- Sporing og feilsøking av distribuerte systemer
- Integrasjon av målinger og overvåking
- Minneanalyse og justering av søppelinnsamling