Memory Leak Observed in Erlang Application -


let me put question simple below. mine network router software built in erlang, @ particular scenario observing high memory growth shown vm.

have 1 process receives binary packet other process socket.

process, parses binary packet , passes binary packet gen_server (handle_cast called)

gen_server again stores information in ets table , send packet peer server.

when peer server responds entry ets deleted , gen_server responds first process

if first process (which sent packet gen_server) gets timedout after 5 seconds waiting response gen_server , deletes ets entry in gen_server , exits.

observing high memory growth when lots of events gets timed out (due unavailability of peer server) , have researched "**binary**" , "**processes_used**" given erlang:memory command thats using of memory.

same not true when events processed successfully.

the memory lost can in 3 places:

  1. the state of gen_server

    • look @ state, find out if there big or growing stuff there
  2. your processes mailboxes

    • see there way drain unmatched messages (for gen_server handle_info callback) in normal receives any ->clause.

    • if mailbox fills temporarily because of receiving process being slow rate of messages produced. problem asynchronous communication. if temporary bursts don't break intended.

      • in case can either optimize receiving process

      • or fix protocol use fewer messages

      • if have multiple functions receive messages, make sure receiving parts being called regularly. dont forget any -> clauses.

    • be aware while processing in gen_servers callback no messages received, if need more time in callback necessary asyncronous messages might pile (e.g. random message arrival + fixed processing time builds unbounded growing queue, details see queueing theory

  3. in ets table

    • maybe information in ets not removed? forgot remove in cases?

Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -