为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 VisualVM 对 Wildfly10 进行 CPU 配置?

如何使用 VisualVM 对 Wildfly10 进行 CPU 配置?

呼唤远方 2021-06-15 21:57:09
问题: 我有一个 J2EE 应用程序,对于使用特定数据集的给定任务(生成一些文件),该应用程序运行速度非常慢。我决定在应用程序上运行 visualvm 分析器以了解问题的性质。该应用程序使用最新的 Java 8 在 Widlfly 10 上运行。为了避免配置复杂性,分析器(visualvm)和 Wildfly 服务器都在本地运行。遇到的第一个问题是 JVMTI 错误 62,这是使用-Xverify:none作为 jvm 参数解决的。第二个问题(阻塞问题)是,如果我在应用程序部署和运行时运行探查器,Wildfly 部署扫描器会抛出如下异常:13:19:04,476 INFO  [stdout] (*** Profiler Agent Communication Thread) Profiler Agent: Waiting for connection on port 5140 (Protocol version: 15)13:19:04,517 INFO  [stdout] (*** Profiler Agent Communication Thread) Profiler Agent: Established connection with the tool13:19:04,847 INFO  [stdout] (*** Profiler Agent Communication Thread) Profiler Agent: Local accelerated session13:19:15,984 WARN  [org.jboss.as.ejb3.timer] (EJB default - 6) WFLYEJB0043: A previous execution of timer [id=e6a6ea46-6c2a-466d-b767-cccc8d5021a9 timedObjectId=ecs.ecs.BatchCoordinator auto-timer?:false persistent?:false timerService=org.jboss.as.ejb3.timerservice.TimerServiceImpl@142b16ca initialExpiration=Sun Aug 05 13:17:05 COT 2018 intervalDuration(in milli sec)=5000 nextExpiration=Sun Aug 05 13:19:15 COT 2018 timerState=IN_TIMEOUT info=null] is still in progress, skipping this overlapping scheduled execution at: Sun Aug 05 13:19:15 COT 2018.13:19:16,025 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 1) WFLYCTL0013: Operation ("read-resource") failed - address: ([("deployment" => "my_application.war")]): java.lang.NoClassDefFoundError: org/jboss/as/controller/AttributeDefinition$$Lambda$157如果我在没有部署任何应用程序的情况下运行探查器,VisualVM 的探查器将毫无问题地启动;但是,如果我尝试在此状态/操作模式下部署我的应用程序,则wildfly 扫描程序永远不会启动,也永远不会部署该应用程序。那么,我做错了什么?
查看完整描述

1 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

最后,我使用了visualVM Profiler...这些是使用VisualVM执行Wildfly 10 CPU配置文件所需的步骤(都在本地执行!!):

  1. 下载最新的VisualVM(在我的例子中是 1.4.1 版)。

  2. 下载 JDK10...您将需要 JDK10 才能仅运行 VisualVM。由于这个错误,这一步是必需的(这是我之前在分析应用程序时遇到的错误)

  3. 更改 visualVM 配置文件 ( <visual-vm>/etc/visualvm.conf) 以指向您的 JDK10 安装...

  4. 转到<visual-vm>/profiler/lib并复制库:jfluid-server.jar到:<wildfly>/standalone/lib/ext...需要此库来克服以下错误:(此处此处java.lang.NoClassDefFoundError: org/netbeans/lib/profiler/server/ProfilerRuntimeCPUFullInstr有关此错误的更多信息)

  5. 接下来,修改 wildfly 启动脚本以将包包含org.netbeans.lib.profiler.server在 SystemProperty: 中jboss.modules.system.pkgs。例子:-Djboss.modules.system.pkgs=org.jboss.byteman,org.netbeans.lib.profiler.server。(根据此链接,此属性强制野蝇从任何类加载器中定位此类包)

  6. 启动视觉VM。

  7. 启动 Wildfly 服务器(包括您的应用程序 EAR/WAR/JAR 应用程序)...注意:我使用 JBoss 工具从 Eclipse 运行 Wildfly 服务器;在这种配置下,我的应用程序 (WAR) 处于爆炸模式!

  8. 进入visualVM,打开org.jboss.modules.Main进程。然后转到分析器选项卡。修改目标Profile classesOutgoing calls并把类要监视/型材(:现在,对我来说,冠军的配置是:Profile classesmy.package.**Include outgoing callsmy.package.**

  9. 点击 CPU 按钮,等待 VisualVM 检测您的目标类,然后调用运行缓慢的代码;稍后,分析结果...


查看完整回答
反对 回复 2021-06-30
  • 1 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信