dimitarvp

dimitarvp

As a general observation, it seems that some binaries are never released by the GC. You’ll have to start using :binary.copy at process boundaries.

This is extremely likely related to sending parts of the received parsed JSON objects from one process to another.

0
Post #11
mekusigjinn

mekusigjinn OP

Would that be true even if the binary_alloc is staying fairly constant at 125 MB, while eheap was at 77 GB and climbing?

0
Post #12
LostKobrakai

LostKobrakai

How many of those 200MB+ processes did you have though? Those 90GB heap total need to go somewhere.

0
Post #13
dimitarvp

dimitarvp

Sorry, I don’t remember. I fought with such problems very rarely and details didn’t stick around.

1
Post #14
mekusigjinn

mekusigjinn OP

Thanks for jumping in to help out. That’s what’s weird, there is only 1 or 2 max.
This is even during the memory spikes.

I read eheap is for data that processes need so it doesn’t have to ask for more memory from the VM. I wonder if those eheap memory don’t get counted when doing Process.info(pid, :memory)?

0
Post #15
dimitarvp

dimitarvp

btw it might be worth it raising your problem on Erlang forums. Here’s one topic there that kinda sorta sounds similar, if for no other reason than eheap being mentioned. :003:

A small and IMO incomplete explanation on eheap is contained here: https://stackoverflow.com/questions/29004596/eheap-allocated-in-erlang

Beyond that though, no clue.

I have to tell you that periodically we get forum posts like yours and I feel really bad about them because they very rarely get resolved, or if they are the original posters never follow through. :confused:

1
Post #16
mekusigjinn

mekusigjinn OP

I think we’ve found the issue - just wanted to report back.

Sample testing a change using PartitionSupervisor with “default” setup mode of 1 per core showed better results.

I would think together with that + poolboy would probably resolve this issue.

Thanks everyone for offering help!

2
Post #17
— All posts loaded —