Your data. Anywhere you go.

New Relic for iOS or Android


Download on the App Store    Android App on Google play


New Relic Insights App for iOS


Download on the App Store


Learn more

Close icon

Relic Solution: What does "Application code" mean?

custom_instrumentation
levelup
javaagent

#1

You’ve noticed one of your transactions takes much longer than expected so you start clicking to see if you can find out what is going on but as you drill down you hit a wall. It might look something like this:


(Image from https://docs.newrelic.com/docs/apm/transactions/transaction-traces/transaction-traces-trace-details-page#options)

You may notice the blue circle containing a question mark like this
APM-transaction-trace-app-code

If you hover your cursor over the blue circle, you’ll see a message like this:
APM-app-code-message

What does this mean?

The agent includes out-of-the-box instrumentation for common frameworks and technologies listed https://docs.newrelic.com/docs/agents/java-agent/getting-started/compatibility-requirements-java-agent but there are so many options out there that it’s not feasible to include every Java technology. In some frameworks there are different ways of making calls using wrappers, workers and such. In situations like described here, the agent just can’t see beyond the point of the “Application code” and it needs help. (See also: Relic Solution: "Supported" Technologies and Instrumentation)

What do I do about it?

The agent can be extended using Custom Instrumentation. We have information in our documentation at https://docs.newrelic.com/docs/agents/java-agent/custom-instrumentation and tips from the experts at Relic Solution: How to Custom Instrument Nearly Any Java Framework

If you run into a blocker or have questions, Support is available to help!


Trace method (Application code)
#2

As shown in the popup message above, New Relic’s thread profiler can help identify time-consuming uninstrumented code. Please see this article for more information:


#3

Thank you for the additional link, @pweber! The thread profile is the first step in using the Custom Instrumentation Editor available to use with the Java agent. See https://docs.newrelic.com/docs/agents/java-agent/custom-instrumentation/custom-instrumentation-editor-instrument-ui for more information.


#4

The Thread Profiler (TP) is useless in Production environment, unless a long running transaction that happened on Dec 5, 10:25 is repeatable and it is known when it is coming.
The Thread Profiler can be used in test environment if you start manually TP first and then execute the test during a certain interval not bigger than 10 minutes.

TP is sampling threads every 100 milliseconds. If New Relic increases the frequency of sampling, TP probably can run 24x7.


#5

The Thread Profile is not meant to run in Production and was not designed for that use. It was provided to help troubleshoot an issue at the time that is occurring, then updated to assist with Custom Instrumentation via the Custom Instrumentation Editor.

A recent product announcement provides more real-time profiling information on resources in the JVM and has more extensibility. The announcement can be viewed at https://discuss.newrelic.com/t/product-announcement-real-time-java-profiling/97199


#6

Another resource to help provide more information on the new Real-Time Java Profiling feature using Java Flight Recorder (JFR) data is the blog post by our Product Manager, Abhi Arora, at https://blog.newrelic.com/product-news/real-time-java-profiling/

The intent of this solution was to answer a frequently asked question about the “Application code” message in a Transaction Trace.