问题标签 [yourkit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Yourkit prolonging STW-pauses in minor GC-collections?
We've started monitoring our application with Yourkit, version 11. Since we did, we sometimes observe very strange behaviour. Minor garbage collections sometimes cause stop-the-world pauses longer than two minutes.
java - YourKit 未显示完整信息
我的应用程序在 weblogic 上运行并创建多个线程来处理来自客户端的请求。在使用 YourKit 进行 CPU 分析时,我观察到信息不完整。YourKit 中显示的时间与使用应用程序日志观察到的时间不匹配。有人可以帮帮我吗 ?
java - YourKit 分配跟踪
我正在使用 YourKit 分析器分析应用程序,但有些事情让我感到困惑。
对于每 100 个对象,分配跟踪处于启用状态,并带有堆栈记录。在 %application%->memory->allocations 视图中记录了 20k 个对象。
现在我拍摄内存快照并转到分配-> 调用树视图。大多数对象被列为<Objects without allocation information>
,我看到大约 100 个记录的分配。
为什么会变差?我错过了这些数字的含义吗?
java - YourKit:在绝对路径中找不到代理库
根据YourKit 文档,使用 64 位 Windows 7 企业版:
要检查 Java 是否可以加载分析器代理,请调用以下打印代理参数描述的命令:
java -agentpath:<full agent library path>=help
如果库确实存在,为什么会遇到此错误?
初始化虚拟机时出错
在绝对路径中找不到代理库:“完整代理库路径”
java - 使用 yourkit 进行内存分析所花费的时间
在 150G 的机器上分析一个消耗大约 100G 内存的 Java 应用程序通常需要多长时间?我大约 2 小时前开始分析,到目前为止只完成了 20%。自从我开始分析以来 jvm 使用的总内存已上升到 150G(接近 RAM 大小)。在使用 yourkit 进行分析时,高内存进程需要大量时间是否正常,或者我做错了什么。由于内存已达到 RAM 内存,是否有可能发生大量磁盘交换,这会减慢内存分析速度。我怎样才能使这个过程更快。如果无法使其更快,那么在 Java 应用程序中调查内存泄漏的其他方法是什么?
java - Yourkit 如何测量花费在 unsafe.park 本机方法上的时间?
我知道 Yourkit 会测量 Thread.sleep() 等方法的挂起时间,但是 unsafe.park 原生方法呢?波纹管是采样设置:
walltime=java.io.RandomAccessFile : readBytes(byte[], int, int) walltime=java.io.RandomAccessFile : read() walltime=java.io.RandomAccessFile : write(int) walltime=java.io.RandomAccessFile : writeBytes (byte[], int, int) walltime=java.net.SocketInputStream : socketRead0(java.io.FileDescriptor, byte[], int, int, int) walltime=java.net.SocketOutputStream : socketWrite0(java.io.FileDescriptor , byte[], int, int) walltime=java.lang.Thread : sleep(*)
采样周期毫秒=20
似乎 unsafe.park() 没有使用 walltime,所以它必须是 CPU 时间。根据 Yourkit 文档,CPU 时间是 CPU 在此方法上花费的实际时间,而不仅仅是方法进入和退出之间的时间。
Yourkit 显示了在 park() 方法上花费了很多时间,但我认为 CPU 在 park() 方法上花费的时间并不多。你能确认一下吗?谢谢。
java - Java中内核CPU时间高的原因是什么?
我有一个 Java 服务器运行在一个强大的服务器机器(许多内核、64Gb RAM 等)上,我在测试场景中向它提交了一些工作负载;我提交一个工作量,完全相同,每次测试连续 10 次。一个特定的工作负载,我观察到在 10 次运行的中间,完成所需的时间要长得多(即运行 1-2 - 10 秒、3 - 12 秒、4 - 25 秒、5 - 10 秒等)。在来自服务器的挂起时间的 yourkit 配置文件中,我发现在减速期间 IO、GC、网络或几乎任何东西都没有增加;没有特定方法会增加所花费时间的比例 - 每种方法都比较慢,大致成比例。我所看到的是平均 CPU 使用率下降(大概是因为相同的工作分散在更多时间),但内核CPU 使用率增加 - 从较快工作负载的 0-2% 到较慢工作负载的 9-12%。内核使用率从前一个工作负载的末尾缓慢爬升,稍慢,保持高位,然后在缓慢和下一个工作负载之间下降(有一个暂停)。我无法将此内核 CPU 映射到来自 yourkit 的任何调用。有谁知道这可能是什么?或者建议进一步的调查场所,以显示内核时间的去向?
profiler - Yourkit配置文件在关机前保存快照文件
我在 UAT 服务器上的 linux 上使用 YourKit profiler 作为代理。配置是:
.snapshot 文件仅在我关闭应用程序时保存。如何在不停止应用程序的情况下获取快照?telemetrylimit 不是一个选项
java - Yourkit java profiler:无法启动:无法自动检测将使用 32 位还是 64 位 JVM
我正在尝试将 Yourkit 分析器用于在 tomcat 之上运行的基于 Spring-MVC 的应用程序。我正在使用 Intellij Idea 13。我也成功安装了插件,这就是为什么我可以看到配置文件选项,但我收到以下错误:
谁能告诉我这个 YourKit 插件配置设置到底在哪里?我认为IDE中必须有一些可以配置插件的位置。你能帮忙的话,我会很高兴。谢谢。
performance - 什么会导致 Tomcat (v8) 周期性地出现 CPU 峰值
在 Windows 2012 RT (x64) TEST 服务器上,我们正在运行 Tomcat 8 安装,CPU 使用率在其达到峰值使用率的规律性方面令人不安。
该行为发生在我们的应用程序安装之后但在任何人访问它之前。我已经访问了几页并测试了一些功能,但没有任何东西可以创建我所知道的这种行为。
服务器上有 2 个虚拟处理器,每隔约 20 秒,CPU 使用率(在运行 Tomcat 的一个处理器上)会飙升至 100%,持续 10 秒(给予或接受)。见下文:
模式的规律性向我表明,Tomcat 8 的安装或设置有问题。
我已经安装了 YourKit Java Profiler(通过 SO 推荐),我希望它可以阐明导致这些峰值的原因,但无法看到线程启动的原因——至少部分是因为我的新奇到 YourKit。我确实将它附加到 Tomcat 启动文件中,它似乎正在跟踪行为。
catalina 日志在尖峰事件期间保持沉默(就像我的应用程序日志一样),但是当我停止 Tomcat 时,有一些关于 ThreadLocals 启动但无法删除的消息,然后:“......线程将随着时间的推移而更新尽量避免可能的内存泄漏。”
我让服务器在周末运行,这种模式一直持续到今天,所以我认为我的症状不会消失。现在无论启动什么,只要每 20 秒启动一次这些线程(和/或 YourKit) ,就已经消耗了系统上所有可用的 RAM 。
隔离这种异常的 Tomcat 活动并希望停止或纠正它的可能方法是什么?
YourKit 中有很多图表和标签,所以我不愿列出所有可能有用的东西。感谢您帮助我缩小 YourKit(或其他工具)可以提供给我的问题。
catalina 日志中有关启动的信息:
2015-12-08 更新
根据 Gergely 的要求,该应用程序是 DSpace 的本地安装。这是一个带有 Postgres SQL 数据库后端的 Java 应用程序。我们正在从这里定制它的开源版本:http ://www.dspace.org/introducing 。我不确定还有什么有用的,我认为堆栈跟踪更能说明什么正在运行(和没有运行)——见下文。
通过在 YourKit 中打开 Stack Telemetry,“CPU Estimation”可以通过将光标拖过一段时间的分析器历史来实现。对我来说,看起来所有 CPU 都在空转。Java 文件是Tomcat 例程下图所示的吗?它们并没有因为与 DSpace 相关(尽管我不是专家)而让我感到震惊,而且在 CPU 达到峰值时看起来也没有任何工作正在完成。
注意:堆栈跟踪在安静期间是相同的——唯一的区别是 CPU 时间(毫秒)是数百毫秒而不是数千毫秒。为了比下面更直接的比较,驼峰在 Thread.run() 中表示约 8,000 毫秒,而安静期消耗约 125 毫秒的 cpu 时间(尽管涵盖的时间量大致相同)。
最后,当请求应用程序的页面时,调用树中会出现一个后续的代码分支。如果它发生在峰值期间,加载整个页面可能只需要 400 毫秒的 CPU 时间。出现的代码分支是 ApplicationFilterChain.java 作为与 PooledExecutor$Worker.run() 旁边的一个完整的单独分支——两者都位于层次结构中的 java.lang.Thread.run() 之下。
试图解释堆栈跟踪时:EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run()
负责吗?
没有已知的相关活动的处理器峰值
2015-12-08 更新 #2
YourKit 预先配置为隐藏某些 java 类名模式,这些模式掩盖了对 java.lang.Thread 的深入了解。清除过滤器启用了以下屏幕截图,显示峰值事件期间的绝大多数处理时间是通过调用以下 3 个方法:
- java.io.WinNTFileSystem.canonicalize0
- java.io.WinNTFileSystem.getBooleanAttributes (inFile.exists())
- StardardRoot.java
我对 Tomcat 或 DSpace 还不够了解,无法知道是谁在启动这些任务,我深表歉意。(如果重要的话,第一行正上方的行是java.lang.Thread.run()
then <All threads>
)