speeddragon

speeddragon

Monitor logs on GenStage and PubSub

I’m doing some optimization into an application that uses Riak Core, GenStage, and Phoenix PubSub. I’ve set up a load test that takes the application near the pod restart limit (using Kubernetes) and notice a large quantity of busy_dist_port.

After some search, I found the +zdbbl flag in Erlang page with the default value of 1024. Notice that on Riak KV performance page, their default for Distribution Buffer is 32MB, so I’ve updated mine to 32 MB, and 99.9% of the monitor messages related to the busy_dist_port are gone.

The monitor logs that remains are the following:

[info] monitor busy_dist_port <0.7799.0> [{initial_call,{'Elixir.GenStage',init,1}},{almost_current_function,{ets,match,2}},{message_queue_len,0}] {#Port<0.364>,unknown}

Where the almost_current_function can have different values:

- {almost_current_function,{ets,match,2}}
- {almost_current_function,{erts_internal,dsend_continue_trap,1}}
- {almost_current_function,{ets,lookup_element,3}}
- {almost_current_function,{erlang,bif_return_trap,2}}
- {almost_current_function,{pg2,'-group_members/1-lc$^0/1-0-',1}}

Which I think is related to too much load, and probably nothing I can do.

The other one is for

[info] monitor large_heap <0.4933.0> [{name,'Elixir.pubsub_name.Adapter'},{initial_call,{'Elixir.Phoenix.PubSub.PG2',init,1}},{almost_current_function,{erlang,bif_return_trap,2}},{message_queue_len,771}]

With also similar different values in almost_current_function.

- {gen_server,handle_msg,6}
- {'Elixir.Phoenix.PubSub',local_broadcast,4}
- {erlang,bif_return_trap,2}
- {ets,lookup_element,3}

Is there some recommendation in optimization that can be done that I’m missing? These should be the standard monitor messages when the server in under extreme load, right?

EDIT: The pool_size used for PubSub in this project was set to 10 for a 2.5 core machine (2500m) when the documentation of PubSub recommends 1 partition per 4 cores. Change to a proper number (1) the large_heap monitor logs produced disappeared.

Where Next?

Popular in Discussions Top

PragTob
Hello everyone, I know we had quite some threads (read through lots of them) about background job processing but it remains a hotly deba...
New
sashaafm
I’m trying to evaluate the best combo/stack for a BEAM Web app. Right now I’m exploring Yaws a bit, after having dealt with Phoenix for a...
New
cvkmohan
The upcoming Phoenix 1.6 release looks very interesting. Became a habit to watch the commits - and - what they are bringing in. phx.gen...
New
owaisqayum
I have a sample string sentence = "Hello, world ... 123 *** ^%&amp;*())^% %%:&gt;" From this string, I want to only keep the integers, ...
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 53690 245
New
nburkley
AWS re:Invent is on at the moment with some interesting announcements. One new feature in particular is the Lambda Runtime API for AWS La...
New
jer
I’ve been using umbrellas for a while, and generally started off (on greenfield projects at least) by isolating subapps based on clearly ...
New
shishini
I think this twitter post and youtube video didn’t get as much attention as I hoped I am still new to Elixir, so can’t really judge ...
New
opsb
We’re considering our architecture from a viewpoint of scaling our traffic heavily over the next 6 months. Our current deployment is runn...
New
Markusxmr
Since Drab has been developed for a while in the open, introducing the Liveview functionality in a way it happend appears to undermine th...
New

Other popular topics Top

skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
vegabook
I’m brand new to Phoenix and I have stripped one of the demo applications to the bone. I just want to get an svg up on the screen. Here i...
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 39297 209
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New
nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 47930 226
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New

We're in Beta

About us Mission Statement