JProfiler 是一款功能强大的Java代码分析工具,JProfiler的直观UI可帮助您解决性能瓶颈,确定内存泄漏并了解线程问题且JProfiler Mac破解版配置会话非常简单,第三方集成使得入门变得轻而易举,并且以自然的方式呈现数据分析。
解决连接问题
当无法建立分析会话时,首先要做的是查看分析的应用程序或应用程序服务器的终端输出。对于应用程序服务器,stderr 流通常写入日志文件。这可能是一个单独的日志文件,而不是应用程序服务器的主日志文件。例如,Websphere 应用程序服务器写入一个native_stderr.log
仅包含 stderr 输出的文件。根据 stderr 输出的内容,问题的搜索会采取不同的方向:
连接问题
如果 stderr 包含"Waiting for connection ..."
,则分析的应用程序的配置正常。那么问题可能与以下问题有关:
- 您是否忘记在本地计算机上的 JProfiler GUI 中启动"附加到远程 JVM"会话?除非分析代理配置为使用"nowait"选项立即启动,否则它将等到 JProfiler GUI 连接后才让 VM 继续启动。
- 会话设置中的主机名或 IP 地址配置是否正确?
- 您是否配置了错误的通信端口?通信端口与 HTTP 或其他标准端口号无关,并且不得与已使用的任何端口相同。对于分析的应用程序,通信端口被定义为分析 VM 参数的选项。通过 VM 参数
-agentpath:<path to jprofilerti library>=port=25000
,将使用端口 25000。 - 本地机器和远程机器之间是否有防火墙?可能有用于传入和传出连接的防火墙,甚至中间的网关计算机上也可能有防火墙。
端口绑定问题
如果 stderr 包含有关无法绑定套接字的错误消息,则该端口已在使用中。在这种情况下,请检查以下问题:
- 您是否多次启动配置文件的应用程序?每个配置文件的应用程序都需要一个单独的通信端口。
- 之前的分析运行中是否有任何僵尸 java 进程阻塞了端口?
- 是否有其他应用程序正在使用该通信端口?
如果 stderr 中没有以 为前缀的行,JProfiler>
并且您的应用程序或应用程序服务器正常启动,则-agentpath:[path to jprofilerti library]
VM 参数尚未包含在 Java 调用中。您应该找出启动脚本中实际执行的 java 调用,并在其中添加 VM 参数。
附加问题
当附加到正在运行的 JVM 时,有时您可能在所有 JVM 列表中看不到感兴趣的 JVM。要找到此问题的原因,了解附加机制的工作原理非常重要。当JVM启动时,它会将PID文件写入到hsperfdata_$USER
它发现的临时目录中的目录中。只有同一用户或管理员用户才能附加到 JVM。JProfiler 可以帮助您以管理员用户身份连接到 JVM。
在 Windows 上,使用*"显示服务"*按钮显示所有 JVM 服务进程。JProfiler 安装一个将使用系统帐户运行的帮助程序服务,该服务可以连接到使用系统帐户以及配置的用户帐户运行的服务。该服务的名称是"JProfiler helper",当您单击该按钮时就会安装。您必须确认 UAC 提示才能允许安装该服务。当 JProfiler 退出时,该服务将再次卸载。
在 Linux 上,您可以使用附加对话框中的用户切换器来附加 root 帐户。在分析本地 JVM 以及连接到远程 Linux 或 macOS 计算机时,会显示此用户切换器。对于远程连接情况,您还可以切换到其他非 root 用户。如果您有 root 密码,请始终切换到 root 而不是运行该服务的实际用户。
如果 JVM 在 Linux 上不可见,即使您认为它应该可见,则问题通常与临时目录有关。一种可能是/tmp/hsperfdata_$USER
目录的访问权限错误。在这种情况下,请删除该目录并重新启动 JVM。要附加的进程必须具有对 /tmp 的写权限,否则不支持附加。
如果您使用systemd ,您感兴趣的进程可能已PrivateTmp=yes
在其 systemd 服务文件中设置。然后pid文件被写入到不同的位置。如果您使用附加对话框中的用户切换器更改为 root 用户,或者如果您以 root 身份使用 CLI 工具,JProfiler 将处理此问题。