我有一个坐在循环中并接收命令的进程。Erlang接收***警告***
receive
increase ->
...
decrease ->
...
after 5000 ->
...
end
但是当我用数以千计的信息轰炸它时,它会发生故障并接收到这些警告。
警告消息:
***WARNING*** Unexp msg {<0.106.0>,rec_acked}, info {running,
[{'_UserConnections',20}],
{ieval,3994,34,log,
clientLogging,
[20],
false}}
反正是有来处理呢?它是否会导致任何问题?
谢谢你的回答!
你可以尝试创建一个减少的测试用例来触发这个警告呢?这是我能找到这个确切警告的唯一实例:https://github.com/erlang/otp/blob/770454f0a32fbc0714c6762ed3e4d761b799814f/lib/debugger/src/dbg_icmd.erl#L225-L226。不知道为什么该进程正在接收'rec_acked'消息。 – Dogbert
如果大约1000多个进程发送消息给1个PID(循环),就会发生这种情况。 – Mike5050
必须有一些额外的条件触发这一点。我从2000年产生的进程中发送2000条消息到一个进程,并且没有警告消息(总共400万条消息)。 Erlang VM当前使用500MB以上的RAM,因为主进程没有处理任何消息。 – Dogbert