Fully featured low overhead profiler for Java EE
and Java SE platforms.
Overview & Features Download Buy & Upgrade
Easy to use performance and memory profiler for .NET framework.
Supports ASP.NET, Silverlight, .NET Windows services and more.
Overview & Features Download Buy & Upgrade

Connect to profiled application

Once you have profiled application running, you should connect to it to obtain and analyze profiling results.

Connect to locally running profiled application

"Locally running profiled application" means that the profiled application is running on the same computer where you are now using the profiler UI.

The profiler can automatically detect all locally running profiled applications.

To connect, use Welcome screen:

Note: if you launch the profiled application from your IDE, the profiler UI will automatically start and connect to the application (unless you had turned this option off in the IDE).

Connect to remote application

Important: first, you should enable profiling on the remote machine. The remote application to profile should be running and have the profiler agent loaded.

Use Welcome screen to connect to a profiled application that is running on a remote computer.

You can simply specify the host (name or IP address) of the remote computer where the profiled application(s) is (are) running. In this case the profiler tries to automatically detect the profiled applications on ports in some predefined range. When the profiled application starts, the profiler agent first tries to use a port in this range, thus enabling an automatic scan of the applications on remote host.

If you explicitly specified a port to be used by the profiler agent when launching the profiled application, you have to explicitly enter the port together with the host (using the syntax host:port). Automatic detection will not work in this case. Also, you should specify the pair host:port if there are so many profiled applications running simultaneously that for some of them there was no free port available in the predefined range.

If you do not have a direct access to the host and port, you can use the built-in support for SSH tunneling.

To establish an SSH tunnel, use the following syntax:

user@ssh_server[:ssh_port] [host][:agent_port]

  • user and ssh_server are the credentials for the SSH connection to establish
  • ssh_port - specify if the server does not use the standard SSH port 22
  • host - the host on which the profiled application is running; ssh_server will create a tunnel to that host. If the profiled application runs directly on ssh_server, omit this parameter.
  • agent_port - profiler agent port. If not specified, all applications with agents listening on ports from the standard range will be discovered (the same as for a non-tunnelled connection).

Examples

  • john@server1 - connect to profiling application(s) running on host server1; SSH will connect as john
  • john@server1 :12345 - connect to the profiling application running on server1 with the profiler agent listening on a custom port 12345; SSH will connect as john.
  • john@server1 server2 - connect to profiling application(s) running on host server2, via SSH connection to server1 as john
  • john@server1 server2:12345 - connect to the profiling application running on server2 with the profiler agent listening on a custom port 12345, via SSH connection to server1 as john.

Authentication with a password or a private key is supported.

You will be asked to provide the password each time you connect. The password is not stored anywhere, and is securely erased from memory once the SSH connection is established.

Note: known hosts are not currently checked, and StrictHostKeyChecking SSH parameter is set to no.

Remote profiling troubleshooting

If the remote profiled application cannot be found:

  • Ensure that the application is started with the profiler and is running when you connect.

    If it didn't start or terminated by the moment, check the application's output, logs etc. for possible errors, or restart the application if it was intentionally shut down.

  • If the application is up and running, ensure that the network connection is not blocked by a firewall, an antivirus etc.

    Check both the remote machine side and the local machine side. The profiler agent port must be allowed.

    Note: the profiler agent port is not one of the ports you may use to communicate with the profiled application or server, like HTTP 8080. Instead, it's a special dedicated port used solely by the profiler.

    By default, the profiler agent port is allocated from the range 10001-10010 or a random one is used if all ports in this range are busy, or can be explicitly specified with the startup option 'port'. If the profiler agent port is not in the default range 10001-10010, explicitly specify the port in the connect dialog as host:port

    If you are unsure which port is used, look at the profiler agent log on the remote machine. It is created in <user home>/.yjp/log/<session name>-<PID>.log, where <user home> corresponds to the account under which the profiled application is started.

    The log file location is also printed to stderr:
    [YourKit Java Profiler <version>] Loaded. Log file: <full path to the log file>

    Version 8.0.x and older agents used to print the port to stderr only:
    [YourKit Java Profiler <version>] Profiler agent is listening on port <port number>...

Web interface: check agent status in web browser

Since version 2015 build 15060, the profiler agent status can be checked by opening the URL http://localhost:<agent port> for a local profiled application or http://<remote host>:<agent port> for a remote profiled application in a web browser.

The shown page resembles the content of the Summary tab in the profiler UI plus provides detail on currently active profiling modes.

In connected mode

After a connection is established successfully, the profiling session tab opens. It contains the toolbar to control profiling and displays application telemetry.

1. Capture performance snapshot - save the profiling results to a file, for comprehensive analysis
2. Control CPU profiling
3. Control thread telemetry
4. Control memory profiling: capture memory snapshot, start/stop object allocation recording, advance object generation
5. Configure triggers
6. Force garbage collection
7. Control monitor profiling
8. Control exception telemetry
9. "Pause" - stop/start receiving data from profiled application.
"Refresh" - immediately receive profiling data from the profiled application and update the views
10. Scale graphs

You can close the profiling session tab by selecting File | Close Profiling Session.

You can connect to and disconnect from the profiled application as many times as you wish during its run time.