13 Replies Latest reply on Dec 4, 2013 5:25 AM by srinu.ydlp

    JBoss Profiler Quick Start

    scottdawson

      Please consider adding a "Quick Start" guide to the JBoss Profiler documentation to help new users get up and running quickly.

      Here's my first draft based on JBoss Profiler 1.0.CR4 with JBoss App Server 4.0.5 and Java 1.5:

      Installation:
      1) copy jboss-profiler-noAOP.sar to the JBoss AS deploy directory
      2) put jbossInspector.dll in your PATH (Windows)
      or libjbossInspector.so in your LD_LIBRARY_PATH (Linux/Unix)
      3) copy jboss-profiler.war to the JBoss AS deploy directory
      Configuration:
      1) Add something like this to the JBoss JVM options: -XrunjbossInspector:/tmp/profiler,include=com.unisys,ignore=*,memory=false
      Make sure the output directory (/tmp/profiler in this example) exists.
      Usage:
      1) In the jmx-console, use the jboss.profiler Native-profiler mbean to activate profiling
      2) Exercise your application
      3) In the jmx-console, use the jboss.profiler Native-profiler mbean to stop profiling (if you forget to do this, you will
      probably get a java.io.EOFException when you try to use the analyzer war)
      4) Analyze results using the JBoss Profiler web app at localhost:8080/jboss-profiler
      Example analysis:
      a. Click on 'Runtime Profiler'
      b. Enter the output directory, for example, /tmp/profiler
      c. Check 'Stack on methods', uncheck other options and submit
      d. Click 'click here'
      e. Click the 'All Methods' link to get a view of time allocation among individual methods

      Regards,
      Scott Dawson
      Unisys

        • 1. Re: JBoss Profiler Quick Start
          william-zhu

          I encoutered an issue at the step 2).
          This is the new DLL
          Running process on Windows 2100
          Usage: java [-options] class [args...] <to execute a class>
          or java [-options] -jar jarfile [args...]

          • 2. Re: JBoss Profiler Quick Start
            scottdawson

            I think in step 2 it would have been clearer if I'd said: copy the DLL or SO to a directory found in your PATH or LD_LIBRARY_PATH.
            Is that what you are doing?

            Scott

            • 3. Re: JBoss Profiler Quick Start
              william-zhu

              Hi Scott,

              I have put dll in my path (Windows). from the warning messages(This is the new DLL ), we can get that DLL has been found.

              In additions, I also copy jboss-profiler.war to the JBoss AS deploy directory.

              do you have any ideas?

              • 4. Re: JBoss Profiler Quick Start
                william-zhu

                Hi Everyone,

                I have worked out the issue.
                Anyways thanks for your helps.

                • 5. Re: JBoss Profiler Quick Start
                  jigu888

                  Hi,

                  I am new to JBoss Profiler. Please help me to setup it within JBoss Application Server.
                  I am using jboss-4.0.5.GA. The output of 'java -version' command is :
                  ----------------
                  java version "1.5.0"
                  Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
                  Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)
                  ----------------
                  The operating system is Windows Server 2003.
                  I am using jboss-profiler-1.0.CR4(2).

                  I have setup it as follows:
                  1. Copied jbossInspector.dll to C:\Windows\System32
                  2. Copied jboss-profiler.war, jboss-profiler-jvmti.sar and jboss-profiler-noAOP.sar to %JBOSS_HOME%\server\default\deploy directory
                  3. Edited run.bat file and appended following to JAVA_OPTS:
                  -XrunjbossInspector:%JBOSS_HOME%/server/default/tmp/profiler,memory=true,tracer=true
                  4. Created profiler directory under tmp folder for above step.

                  When I started the jboss service by double clicking the run.bat file, I got following exception:
                  ----------------
                  2007-12-11 03:25:39,619 DEBUG [org.jboss.deployment.SARDeployer] Deploying SAR, create step: url file:/D:/JBoss/jboss-4.0.5.GA/server/default/deploy/jboss-profiler-jvmti.sar
                  2007-12-11 03:25:39,619 DEBUG [org.jboss.deployment.SARDeployer] Registering service UCL=jmx.loading:UCL=8f2ca6
                  2007-12-11 03:25:39,619 DEBUG [org.jboss.system.ServiceCreator] About to create xmbean object: jboss.profiler:mbean=JVMTIClass with code: org.jboss.profiler.jvmti.JVMTIInterface with descriptor: META-INF/jvmti-xmbean.xml
                  2007-12-11 03:25:39,650 ERROR [org.jboss.profiler.jvmti.JVMTIInterface] The DLL couldn't be loaded, you won't be able to use any JVMTIInterface feature
                  java.lang.UnsatisfiedLinkError: no jbossAgent in java.library.path
                  at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
                  at java.lang.Runtime.loadLibrary0(Runtime.java:822)
                  at java.lang.System.loadLibrary(System.java:992)
                  at org.jboss.profiler.jvmti.JVMTIInterface.(JVMTIInterface.java:65)
                  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
                  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
                  .....
                  .....
                  at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
                  at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
                  at $Proxy5.deploy(Unknown Source)
                  at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)
                  at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
                  at org.jboss.Main.boot(Main.java:200)
                  at org.jboss.Main$1.run(Main.java:490)
                  at java.lang.Thread.run(Thread.java:595)
                  2007-12-11 03:25:39,806 DEBUG [org.jboss.system.ServiceCreator] Created bean: jboss.profiler:mbean=JVMTIClass
                  2007-12-11 03:25:39,806 DEBUG [org.jboss.system.ServiceController] Creating service jboss.profiler:mbean=JVMTIClass
                  ----------------

                  Am I missing something? Please help me.

                  Thanks

                  • 6. Re: JBoss Profiler Quick Start
                    clebert.suconic

                    If you also want to install the Memory leak tool (JVMTI) you will also need to copy jbossAgent.dll/so into your path (and add -agentlib:jbossAgent to your JVM)

                    • 7. Re: JBoss Profiler Quick Start
                      jigu888

                      Thanks, I have followed what has been written above and now I am not getting any exception while starting the jboss service.

                      much appreciated..

                      • 8. Re: JBoss Profiler Quick Start

                        Please help me on how I can deploy jboss-profiler.SAR, I use JBoss 4.2, Java 1.6 and trying to install jboss-profiler-2.0.Beta3.SP1 with no luck. I followed all the instructions but it still gives me errors when trying to profile

                        • 9. Re: JBoss Profiler Quick Start
                          jesper.pedersen

                          mjn, update to 2.0.0.Beta5 and follow the installation chapter in the user guide.

                          • 10. Re: JBoss Profiler Quick Start
                            darpan27484

                            Hi folks

                                I am new to jboss profiler. I have installed jboss profiler 2.0.0.Beta5 on linux box without any worries by reading jbossprofiler2-userguide.pdf.

                            Now I want to see the output. I googled some ways to do it like in command line and thru jboss profiler webinterface. But i cannot find any good documentation step by step.

                                Can anyone post a good link or the step by step process to read the output. I also noticed to .jps files created in my jbossAS\bin dir

                            But am not able to read it. Look forward to hear from you.

                            Thanks in advance,

                            Darpan

                            • 11. Re: JBoss Profiler Quick Start
                              cooldownthethroat

                              I am trying to run JBOSS Profiler in JBOSS 5.0 and following steps which are mentioned in the userguide.

                               

                              My HTTP port for my web application is 8080.

                              When I configure the same port in Jboss-profiler.properties file even after that during startup I see

                              JBoss Profiler: Communicator for JBoss Profiler 2.0.0.Beta5

                              JBoss Profiler: Socket=IP:5400 (say IP is 10.10.10.10)

                               

                              Now, the server starts up pretty well and when I open JMX console I can see the Mbean also for both communicator and profiler.

                               

                              However when I try to access http://10.10.10.10:8080/jboss-profiler I get no page found error

                               

                              and when I try to access http://10.10.10.10:5400/jboss-profiler I get the following error:-

                               

                              java.lang.reflect.InvocationTargetException

                                      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

                                      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

                                      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

                                      at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

                                      at org.jboss.remoting.transport.socket.ServerThread.createServerSocketWrapper(ServerThread.java:907)

                                      at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:489)

                                      at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:230)

                              Caused by: java.io.StreamCorruptedException: invalid stream header: 47455420

                                      at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:782)

                                      at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279)

                                      at org.jboss.remoting.loading.ObjectInputStreamWithClassLoader.<init>(ObjectInputStreamWithClassLoader.java:97)

                                      at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.createInput(JavaSerializationManager.java:54)

                                      at org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.getMarshallingStream(SerializableUnMarshaller.java:7

                                      at org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.getMarshallingStream(SerializableUnMarshaller.java:5

                                      at org.jboss.remoting.transport.socket.ClientSocketWrapper.createInputStream(ClientSocketWrapper.java:179)

                                      at org.jboss.remoting.transport.socket.ClientSocketWrapper.createStreams(ClientSocketWrapper.java:162)

                                      at org.jboss.remoting.transport.socket.ClientSocketWrapper.<init>(ClientSocketWrapper.java:66)

                                      at org.jboss.remoting.transport.socket.ServerSocketWrapper.<init>(ServerSocketWrapper.java:46)

                                      ... 7 more

                               

                              Can anyone please guide me how to run it properly....

                               

                              Steps followed to configure Profiler:-

                              Copy jboss-profiler.jar to jbossas/bin

                              • Copy jboss-profiler.properties to jbossas/bin

                              • Edit jboss-profiler.properties in jbossas/bin to include the classes to be profiled

                              • Copy jboss-profiler-plugins.jar to jbossas/bin

                              • Edit run.bat (Windows) in jbossas/bin to include JBoss Profiler in JAVA_OPTS

                              • Copy jboss-profiler.sar to jbossas/server/<conf>/deploy

                              • Boot application server

                               

                              If I click on start profiler from the MBean I get the following exception:-

                               

                              org.jboss.remoting.InvalidConfigurationException: The invoker for locator (InvokerLocator [socket://10.10.10.10:5400/]) is already in use by another Connector.  Either change the locator or add new handlers to existing Connector.

                                      at org.jboss.remoting.InvokerRegistry.createServerInvoker(InvokerRegistry.java:552)

                                      at org.jboss.remoting.transport.Connector.init(Connector.java:419)

                                      at org.jboss.remoting.transport.Connector.create(Connector.java:1139)

                                      at org.jboss.profiler.as.Communicator.startSocket(Communicator.java:316)

                                      at org.jboss.profiler.as.Communicator.start(Communicator.java:277)

                                      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

                                      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

                                      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

                                      at java.lang.reflect.Method.invoke(Method.java:597)

                                      at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)

                                      at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)

                                      at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)

                                      at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)

                                      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)

                                      at org.jboss.jmx.adaptor.control.Server.invokeOpByName(Server.java:258)

                                      at org.jboss.jmx.adaptor.control.Server.invokeOp(Server.java:223)

                                      at org.jboss.jmx.adaptor.html.HtmlAdaptorServlet$3.run(HtmlAdaptorServlet.java:380)

                                      at org.jboss.jmx.adaptor.html.HtmlAdaptorServlet$3.run(HtmlAdaptorServlet.java:378)

                                      at java.security.AccessController.doPrivileged(Native Method)

                                      at org.jboss.jmx.adaptor.html.HtmlAdaptorServlet.invokeOp(HtmlAdaptorServlet.java:376)

                                      at org.jboss.jmx.adaptor.html.HtmlAdaptorServlet.invokeOp(HtmlAdaptorServlet.java:287)

                                      at org.jboss.jmx.adaptor.html.HtmlAdaptorServlet.processRequest(HtmlAdaptorServlet.java:104)

                                      at org.jboss.jmx.adaptor.html.HtmlAdaptorServlet.doPost(HtmlAdaptorServlet.java:86)

                                      at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

                                      at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

                                      at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

                                      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

                                      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

                                      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)

                                      at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:191)

                                      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java)

                                      at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)

                                      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)

                                      at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)

                                      at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)

                                      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

                                      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

                                      at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)

                                      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

                                      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)

                                      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)

                                      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)

                                      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

                                      at java.lang.Thread.run(Thread.java:662)

                              • 12. Re: JBoss Profiler Quick Start
                                naeem.arshad

                                Hi Scott Dawson, How can I perform the same steps on Mac osx Lion? I can not find the path LD_LIBRARY_PATH on my mac. does anyone know the solution how to solve this issue on mac osx?

                                 

                                thanks

                                • 13. Re: JBoss Profiler Quick Start
                                  srinu.ydlp

                                  I am using jboss 7.1 . Where i need to place jboss-profiler.sar file as i do not have deafult and deploy folders