[erlang-questions] Request for opinions on using process dictionary for meta information
Mikael Pettersson
mikpelinux@REDACTED
Tue Apr 18 10:33:31 CEST 2017
Jay Doane writes:
> Our team is currently using the process dictionary to store meta
> information for long running processes, and would like to hear from folks
> familiar with beam internals whether this is a recommended practice.
>
> Essentially we add meta information about the current request in a process
> dictionary of every process related to handling of this request. This
> information could be:
> - current file
> - user name of initiator of the request
> - http query parameters
> - type of a process (indexer | compactor | http_handler)
>
> For example, when we detect performance problems, we run a function that
> returns the Pids of (say) top memory using processes. We use the meta info
> stored in process dictionaries to determine which documents are using
> excessive memory so we can take corrective action.
>
> In practice, we are unable to use normal OTP messaging because in many
> cases, the high memory using processes have also grown huge message queues,
> and so would be unresponsive to any additional messages.
>
> Given our existing constraints, is this a reasonable use of the process
> dictionary?
Yes, I think this is perfectly reasonable.
More information about the erlang-questions
mailing list