Muistianalyysi ja roskienkeruun säätäminen
Tunnista muistin kasvu, tarkastele prosessikohtaisia kekoja ja säädä Erlangin roskienkeruuta, jotta pitkään käynnissä olevat solmut pysyvät terveinä.
Muistianalyysi ja roskienkeruun säätäminen on ilmainen Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-kurssilla on yhteensä 4 oppituntia.
Miksi muistilla on merkitystä?
Erlang-solmut voivat olla käynnissä kuukausia. Pieni prosessikohtainen muistivuoto tai rajattomasti kasvava viestijono kasvaa huomaamatta, kunnes käyttöjärjestelmä lopettaa solmun. Muistin havainnointi on välttämätöntä.
Koko järjestelmän muisti
erlang:memory/0 palauttaa erittelyn muistinkäytöstä: kokonaismäärän, prosessit, atomit, binäärit, ETS:n ja muuta. Seuratkaa luokkia, jotka kasvavat ajan mittaan.
erlang:memory().Prosessikohtainen tarkastelu
process_info/2 näyttää yksittäisen prosessin keon, viestijonon pituuden ja muuta tietoa — nämä ovat olennaisia syyllisen löytämisessä.
process_info(Pid, [memory, message_queue_len, heap_size]).Viestilaatikon ansa
Jos prosessi vastaanottaa viestejä nopeammin kuin ehtii käsitellä niitä, sen viestilaatikko kasvaa rajatta. Suuri message_queue_len-arvo on ylikuormittuneen kuluttajan klassinen merkki.
Binäärit ja Refc-vuodot
Suuret binäärit käyttävät viitelaskentaa ja jaetaan keon ulkopuolella. Pientä alibinääriä hallussaan pitävä prosessi voi estää valtavan emobinäärin vapauttamisen. Seuratkaa binary-muistiluokkaa tarkasti.
Pahimpien kuluttajien löytäminen
Lajitelkaa kaikki prosessit muistin käytön mukaan, jotta löydätte vuodot nopeasti.
lists:sort(fun({_,A},{_,B}) -> A > B end,
[{P, element(2, process_info(P, memory))} || P <- processes()]).Erlangin roskienkeruun toiminta
Jokaisella prosessilla on oma yksityinen keonsa, jonka roskat kerätään itsenäisesti — maailmanlaajuista kaikkien prosessien pysäyttävää taukoa ei ole. Keruu käynnistyy, kun prosessin keko täyttyy.
Roskienkeruun käynnistäminen manuaalisesti
Jos epäilette prosessin pitävän roskia hallussaan, pakottakaa roskienkeruu ja mitatkaa muisti uudelleen.
erlang:garbage_collect(Pid),
process_info(Pid, memory).Keon säätäminen
Spawn-asetuksilla, kuten min_heap_size ja fullsweep_after, voitte säätää roskienkeruuta kuormitetuille prosesseille ja vaihtaa muistinkulutusta vähäisempään keruiden määrään.
spawn_opt(fun work/0, [{min_heap_size, 1000}, {fullsweep_after, 10}]).Horrostila
Joutokäynnillä olevat prosessit voivat kutsua hibernate-toimintoa tiivistääkseen keonsa vähimmäiskokoon. Tämä vapauttaa muistia seuraavan viestin saapumiseen asti ja sopii hyvin useille enimmäkseen joutilaana oleville yhteyksille.
proc_lib:hibernate(?MODULE, loop, [State]).ETS-taulujen seuraaminen
ETS-taulut sijaitsevat prosessikeon ulkopuolella eivätkä kutistu automaattisesti. Kasvava ets-muistiluokka tarkoittaa usein vanhentuneita rivejä. Siivotkaa niitä säännöllisesti tai käyttäkää tauluja, joiden koko on rajattu.
ets:info(my_table, memory).Pikatarkistus
Testatkaa muistin säätämistä koskevaa tuntemustanne.
Kertaus
Opitte analysoimaan ja optimoimaan muistia:
erlang:memory/0antaa koko järjestelmän kattavan erittelynprocess_info/2tarkastelee prosessikohtaista kekoa ja postilaatikkoa- Kasvavat postilaatikot ja kiinnitetyt binäärit ovat yleisiä muistivuotojen lähteitä
- Jokainen prosessi suorittaa roskienkeruun itsenäisesti; maailmanlaajuista pysäytystä ei ole
- Optimoikaa toimintaa spawn-asetuksilla ja käyttäkää
hibernate-toimintoa joutilailla prosesseilla
Opi Erlang tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Muistianalyysi ja roskienkeruun säätäminen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-oppimispolun 3 oppituntia, myös oppitunnin “Muistianalyysi ja roskienkeruun säätäminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Muistianalyysi ja roskienkeruun säätäminen”?
Tunnista muistin kasvu, tarkastele prosessikohtaisia kekoja ja säädä Erlangin roskienkeruuta, jotta pitkään käynnissä olevat solmut pysyvät terveinä. Harjoittelet Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Muistianalyysi ja roskienkeruun säätäminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-oppitunnilla?
Kyllä. Jokainen Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Erlangin profilointitekniikat
- Hajautettujen järjestelmien jäljitys ja virheenkorjaus
- Mittausten ja valvonnan integrointi
- Muistianalyysi ja roskienkeruun säätäminen