PID contributing 97% in the response time/API timeouts

While checking my API metrics in new relic and found queries are getting executed with response time in a few ms, but there is a field for #PID<0.30881.849> which took 300ms+ to process.

Below is the table

Category Slowest components Count Duration %
#PID<0.30881.849> #PID<0.30881.849> 1 379 ms 97%
Database Postgres rules_engine_test_cases select 1 2 ms 1%
Database Postgres rules_engine_conditions select 1 1 ms 0%
Database Postgres rules_engine_results select 1 1 ms 0%
Database Postgres rules_engine_new_audit_logs insert 1 1 ms 0%
WebTransaction /Diamond.Web.RuleSetController/select_evaluate 1 0 ms 0%
Remainder Remainder 1 7 ms 2%
Total time 391 ms 100%

Can you please help me understand this as it is causing few timeouts as well?

Without knowledge of what is that PID doing and how it is implemented, then it is quite hard to tell.

It is an old code and I got to work on it.
PID is the process id that is processing the current request I guess.

It will just show that the PID is taking 300ms

All I can find in the new relic is Application code (in #PID<0.21415.227>) is taking 99% of the total processing time which is 5690ms which is huge.

Can you please help me understand from the new relic perspective @binaryseed

Reason why you are not getting almost any answers is that what you are asking is basically someone else to do your work for you. Also they can’t give you any answers because they don’t have access to your code and if they did they would have to what you need to do and that is to find out what part of your code is slow. If someone asked something like that from you would you be able to answer?

I don’t work with Elixir professionally but first thing I would do is to find out what parameters where given to the request. Then try to get same problem appear in your local environment and start profiling. I haven’t yet used any Elixir/BEAM profiling tools because I haven’t had any performance problems with my small projects. With small bit of googling I found this blog how to do performance profiling in Elixir An Elixir performance tooling story | by Victor Nascimento | Medium


Here is an example how you could tackle this: