代码之家  ›  专栏  ›  技术社区  ›  Carlitos Way

如何使用VisualVM配置Wildfly10?

  •  1
  • Carlitos Way  · 技术社区  · 6 年前

    问题: 我有一个J2EE应用程序,对于使用特定数据集的给定任务(生成一些文件),运行非常缓慢。我决定在应用程序上运行visualvm分析器来理解问题的本质。应用程序正在使用最新的Java 8在Widlfly 10上运行。

    为了避免配置复杂性,两个PrrPosiver(VisualVM)和MyF飞服务器都在本地运行。

    遇到的第一个问题是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 tool
    
    13:19:04,847 INFO  [stdout] (*** Profiler Agent Communication Thread) Profiler Agent: Local accelerated session
    
    13: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
    at org.jboss.as.controller.AttributeDefinition$$Lambda$157/1799183343.get$Lambda(Unknown Source)
    at org.jboss.as.controller.AttributeDefinition.getNoTextDescription(AttributeDefinition.java:872)
    at org.jboss.as.controller.AttributeDefinition.addResourceAttributeDescription(AttributeDefinition.java:697)
    at org.jboss.as.controller.ListAttributeDefinition.addResourceAttributeDescription(ListAttributeDefinition.java:158)
    at org.jboss.as.controller.descriptions.DefaultResourceDescriptionProvider.getModelDescription(DefaultResourceDescriptionProvider.java:129)
    at org.jboss.as.controller.operations.global.ReadResourceHandler.doExecuteInternal(ReadResourceHandler.java:370)
    at org.jboss.as.controller.operations.global.ReadResourceHandler.doExecute(ReadResourceHandler.java:173)
    at org.jboss.as.controller.operations.global.GlobalOperationHandlers$AbstractMultiTargetHandler.execute(GlobalOperationHandlers.java:263)
    at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:890)
    at org.jboss.as.controller.AbstractOperationContext.processStages(AbstractOperationContext.java:659)
    at org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:370)
    at org.jboss.as.controller.OperationContextImpl.executeOperation(OperationContextImpl.java:1329)
    at org.jboss.as.controller.ModelControllerImpl.internalExecute(ModelControllerImpl.java:400)
    at org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:208)
    at org.jboss.as.controller.ModelControllerImpl$3.execute(ModelControllerImpl.java:667)
    at org.jboss.as.controller.ModelControllerImpl$3.execute(ModelControllerImpl.java:657)
    at org.jboss.as.server.deployment.scanner.DefaultDeploymentOperations.getDeploymentsStatus(DefaultDeploymentOperations.java:76)
    at org.jboss.as.server.deployment.scanner.FileSystemDeploymentService$ScanContext.<init>(FileSystemDeploymentService.java:1622)
    at org.jboss.as.server.deployment.scanner.FileSystemDeploymentService$ScanContext.<init>(FileSystemDeploymentService.java:1571)
    at org.jboss.as.server.deployment.scanner.FileSystemDeploymentService.scan(FileSystemDeploymentService.java:572)
    at org.jboss.as.server.deployment.scanner.FileSystemDeploymentService.scan(FileSystemDeploymentService.java:491)
    at org.jboss.as.server.deployment.scanner.FileSystemDeploymentService$DeploymentScanRunnable.run(FileSystemDeploymentService.java:250)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
    at org.jboss.threads.JBossThread.run(JBossThread.java:320)
    
    Caused by: java.lang.ClassNotFoundException: org.jboss.as.controller.AttributeDefinition$$Lambda$157 from [Module "org.jboss.as.controller:main" from local module loader @4cc77c2e (finder: local module finder @7a7b0070 (roots: D:\jbossas\wildfly-10.1.0.Final-ecs\modules,D:\jbossas\wildfly-10.1.0.Final-ecs\modules\system\layers\base))]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93)
    ... 30 more
    

    如果在没有任何已部署应用程序的情况下运行探查器,VisualVM的探查器将毫无问题地启动;但是,如果尝试在此状态/操作模式下部署应用程序,wildfly扫描仪将不会启动,应用程序也不会部署。

    那么,我做错了什么??

    1 回复  |  直到 6 年前
        1
  •  4
  •   Carlitos Way    6 年前

    最后,我把visualVM剖析器。。。为了执行 Wildfly 10 CPU配置文件 使用VisualVM( 都在本地执行!! ):

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

    2. 下载JDK10。。。你需要JDK10 只运行VisualVM . 因此需要执行此步骤 bug (这是我在分析应用程序时遇到的错误)

    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 (有关此错误的详细信息,请参见 here here )

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

    6. 启动visualVM。

    7. 启动wildfly服务器(包括应用程序EAR/WAR/JAR应用程序)。。。 注意 :我使用JBoss工具从Eclipse运行wildfly服务器;在此配置下,我的应用程序(WAR)处于分解模式!

    8. 去visualVM,打开 org.jboss.modules.Main 过程。然后转到“探查器”选项卡。修改目标 Profile classes Outgoing calls 并将要监视/分析的类( 注意 :目前,我的赢家配置是: 配置文件类 : my.package.** Include outgoing calls : 我的包裹** )

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