Once you have profiled application running, you should connect to it to obtain and analyze profiling results.
"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).
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
Automatic detection will not work in this case.
Also, you should specify the pair
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:
ssh_serverare 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_serverwill 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).
john@server1- connect to profiling application(s) running on host
server1; SSH will connect as
john@server1 :12345- connect to the profiling application running on
server1with the profiler agent listening on a custom port
12345; SSH will connect as
john@server1 server2- connect to profiling application(s) running on host
server2, via SSH connection to
john@server1 server2:12345- connect to the profiling application running on
server2with the profiler agent listening on a custom port
12345, via SSH connection to
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
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
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,
<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>...
Since version 2015 build 15060, the profiler agent status can be checked by opening
http://localhost:<agent port> for a local profiled application
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.
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.