[erlang-questions] Node mysteriously sends 11 MB while spawning a process on another node

Filip Niksic fniksic@REDACTED
Fri Apr 19 16:39:39 CEST 2019


Hi all,

I am trying to understand why a node sends 11 MB of unknown data to another
node while spawning a process on that node.

Let me briefly explain my setup. There are two nodes involved: main and a.
I am running them in two docker containers, which in turn are running in a
simulated network in which I can inspect and analyze network traffic using
Wireshark. Once the nodes are started, main spawns a process on node a with
spawn_link(). In Wireshark I can observe an exchange of ErlDP (distribution
protocol) packets. The spawn_link causes a colossal REG_SEND message being
sent from main to a; the message has length 11011057 (11 MB) and it is
broken into 7605 TCP packets.

Now, it has to be noted that one of the arguments to the spawned process is
a function closure. Could it be that this closure causes the runtime to
pack all of its data structures and pass them along with the message? If
so, how can such a situation be avoided? Is there some general rule of
thumb that function closures should not be passed as arguments in a
distributed setting?

Thanks,

Filip
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20190419/6d18009b/attachment.htm>


More information about the erlang-questions mailing list