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
Fl4m3Ph03n1x
Background A few days ago I was listening to The future of Elixir from Elixir Talks, with Dave Thomas (@pragdave ) and Brian Mitchell. I...
New
MarioFlach
Hello, I want to share a project I’ve been working on for a while: https://github.com/almightycouch/gitgud Background Some time ago I ...
New
pillaiindu
I want to convert a Phoenix LiveView CRUD website to a CRUD mobile app. What do you think is the easiest way to do so?
New
nunobernardes99
Hi there Elixir friends :vulcan_salute: In a recent task I was on, I needed to check in two dates which of them is the maximum and which...
New
chulkilee
Here are the list of HTTP client libraries/wrappers, and some thoughts on HTTP client in general. I’d like to hear from others how they w...
New
tomekowal
Hey guys! I want to create a toy project that shows a chart of temperature over time and updates every 5 seconds. I feel LiveView is per...
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
AstonJ
Seen any cool LiveView demos, sample apps or examples? Please post them here! :003:
New
slashdotdash
Phoenix Live View is now publicly available on GitHub. Here’s Chris McCord’s tweet announcing making it public.
New

Other popular topics Top

TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
274 41539 114
New
chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 30877 112
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 43622 214
New
Emily
I have VueJS GUIs with the project generated using Webpack. I have Elixir modules that will need to be used by the VueJS GUIs. I forese...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
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
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New
boundedvariable
I am going through the kafka architecture. All the features what the kafka is providing are already in Erlang. I would like hear your opi...
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New

We're in Beta

About us Mission Statement