Fully featured low overhead profiler for Java EE and Java SE platforms.
Easy to use performance and memory .NET profiler for Windows and Linux.
Performance monitoring and profiling of Jenkins, Bamboo, TeamCity, Gradle, Maven, Ant and JUnit.

Profiling in Docker container

To profile a Java application or a server running in a Docker container, you should run it with the profiler agent, and then use remote profiling in the profiler UI, as described below.

On Docker side

1. Add few lines to your Dockerfile:

  • Install YourKit Java Profiler agents:

    RUN wget https://www.yourkit.com/download/docker/YourKit-JavaProfiler-2022.3-docker.zip -P /tmp/ && \
      unzip /tmp/YourKit-JavaProfiler-2022.3-docker.zip -d /usr/local && \
      rm /tmp/YourKit-JavaProfiler-2022.3-docker.zip
  • Load the agent to the JVM by adding the Java command line option -agentpath.

    For example, if you start your application with

    java -jar my-app.jar

    ...do it like this:

    java -agentpath:/usr/local/YourKit-JavaProfiler-2022.3/bin/linux-x86-64/libyjpagent.so=port=10001,listen=all -jar my-app.jar

    In this example, the agent is configured to use port=10001. The same port should be used in the -p option when running the container (see below). If you decide to use a different port, please ensure you have changed it everywhere.

    Please choose an appropriate agent path for your docker architecture. The path in the example above corresponds to Linux x64 (glibc), please replace it if your docker architecture differs.

    Platform Agent path
    Linux (glibc) x86, 64-bit /usr/local/YourKit-JavaProfiler-2022.3/bin/linux-x86-64/libyjpagent.so
    ARM 64-bit (AArch64) /usr/local/YourKit-JavaProfiler-2022.3/bin/linux-arm-64/libyjpagent.so
    ppc64le, 64-bit, little-endian /usr/local/YourKit-JavaProfiler-2022.3/bin/linux-ppc-64le/libyjpagent.so
    Alpine Linux (musl) x86, 64-bit /usr/local/YourKit-JavaProfiler-2022.3/bin/linux-musl-x86-64/libyjpagent.so
    Windows x86, 64-bit <profiler directory>\bin\win64\yjpagent.dll

    Please find detailed description of how to specify -agentpath and choose the agent startup options here.

2. Build the container for the modified Dockerfile.

3. When running the container, make the agent port visible with the option -p:

docker run -p 10001:10001 my_container

Connect to the profiled application

When the application is running in the container, connect to it from the profiler UI to perform profiling.

Note: if you're running Docker locally on your developer machine, create a remote connection to localhost.

Notes on a special case: a container with restricted home directory

For security reasons, the user home directory in a docker container may not exist or be read-only.

In this case, the agent will use /tmp instead of <user home>/Snapshots as the default snapshot directory. The snapshot directory may be overridden with the startup option dir.

The profiler agent log file neither can be created in its normal location <user home>/.yjp/log. Should you need the agent log file for troubleshooting purposes, specify a writable directory for it with the startup option logdir.

YourKit uses cookies and other tracking technologies to improve your browsing experience on our website, to show you personalized content and targeted ads, to analyze our website traffic, and to understand where our visitors are coming from.

By browsing our website, you consent to our use of cookies and other tracking technologies in accordance with the Privacy Policy.