Help to understand NewRelic report for slow transactions (2.1.4)

139 views
Skip to first unread message

Markku Nikkanen

unread,
Sep 11, 2015, 1:42:43 AM9/11/15
to play-framework
Hello,

could someone look following question.

http://stackoverflow.com/questions/29675074/slow-transactions-in-newrelic-having-play-framework-as-backend

I am mostly trying to understand the purpose of following methods and what NewRelic report tells about our program performance, if these values are super high.

scala.concurrent.impl.CallbackRunnable.run()
scala.concurrent.impl.Future$PromiseCompletingRunnable.run()
org.jboss.netty.handler.codec.http.HttpRequestDecoder.unfoldAndFireMessageReceived()









Regards,
Markku

Markku Nikkanen

unread,
Sep 14, 2015, 7:46:10 AM9/14/15
to play-framework
Hello,

is this more related to Scala or Netty project? Should I ask help from there?

Regards,
Markku

Igmar Palsenberg

unread,
Sep 15, 2015, 7:21:34 AM9/15/15
to play-framework
Hi,
Which version of the plugin are you using ? In my experience, New Relic is pretty useless in analysing async stuff, since it has no grasp of the Futures that basically the faundation.

I suggest to do the check again with Kamon, which IMHO is better suited.


Regards,


Igmar

Markku Nikkanen

unread,
Sep 15, 2015, 8:01:31 AM9/15/15
to play-framework
Hello,

by plugin you mean NewRelic Java plugin? It is 3.14. There seems to be 3.20 available, already.

Anyway, could you share you best understand what does these three Scala and Netty method calls does? We are always complaining that we have too few threads if these calls have high response time. Do we have totally wrong conclusion? So increasing thread count does not have barely any effect to performance.

 actor {
     
default-dispatcher = {
        fork
-join-executor {
          parallelism
-min = 350
          parallelism
-max = 350
       
}
     
}

Will look Kamon more deeply. Thanks for the tip!

-Markku

Markku Nikkanen

unread,
Sep 15, 2015, 8:14:53 AM9/15/15
to play-framework
What Metric backend would you recommend to be used? We have already NewRelic in use.

Igmar Palsenberg

unread,
Sep 15, 2015, 8:17:41 AM9/15/15
to play-framework
Hi,
 
by plugin you mean NewRelic Java plugin? It is 3.14. There seems to be 3.20 available, already.

Be careful updating. Also notice : Those plugins will not work on the 2.4 series of Play. The scala calls are part of the futures : That does a thing async, and while something awaits that async stuff to be complete, that thread is doing something else.

In general, having a lot of threads isn't a good thing : They have their own stack (fixed minimum size on Linux), and are scheduled. Akka does it a far better way : The actors just keeps running and processing stuff.




 
Anyway, could you share you best understand what does these three Scala and Netty method calls does? We are always complaining that we have too few threads if these calls have high response time. Do we have totally wrong conclusion? So increasing thread count does not have barely any effect to performance.

Probably not. In general, with Play you only need to mess around with the actor pool if you're doing blocking operations. That usually means either a database, or large / intensive file operations. 

I suggest converting the request into a curl request, and doing time measurements with that. That's what your endusers will see, if you're doing really kinky stuff with Actors kamon is a good match, since it will give good in-depth info about how it's really doing.



Regards,


Igmar
Reply all
Reply to author
Forward
0 new messages