I have installed Java Agent to run on a Tomcat 7 on Windows. I can see some data being sent but it is not accurate, for example, the amount of memory consumed in the server doesn't match what the OS is showing, also, the agent is not discovering my transactions and the object instance tracking is empty but I am running processes in the app server. I am evaluating to buy. Any help?
A few thoughts that might help:
1. For Object INstance Tracking make sure you have the tools.jar file is copied to the server classpath and the agent is restarted before trying to use the feature.
2. If there is load into your app and the agent is communicating to the controller, you should see some business transactions based on the first two segments of the URL for any given request. This does require these URLs to be exercised by some load.
3. Unless you've installed a stand-alone machine agent, the memory utilization figures will refer to the Tomcat Java Heap, rather than the machine RAM, so the percentages you see are relative to the Xms or Xmx setting in Tomcat.
Hopefully this will help.
Hi rbaco! Thanks for your quick reply.
For each point:
1. For Object Instance Tracking make sure you have the tools.jar file is copied to the server classpath and the agent is restarted before trying to use the feature.
I added the tools.jar to the Tomcat classpath and also created an enviroment variable Classpath in Windows with the path to the tools.jar and the Object Instance Tracking is still not working.
2. If there is load into your app and the agent is communicating to the controller, you should see some business transactions based on the first two segments of the URL for any given request. This does require these URLs to be exercised by some load.
I do see some business transactions, but they do not map to all my transactions so I cannot drill down to the detail level needed.
3. Unless you've installed a stand-alone machine agent, the memory utilization figures will refer to the Tomcat Java Heap, rather than the machine RAM, so the percentages you see are relative to the Xms or Xmx setting in Tomcat.
This is clear for me, and when I say the memory consumption shown doesn't match the one of the OS I am not refering to the total amount of memory consumed by al processes but to the Tomcat.
Specifically our need is this: We have an application that among other functionalities, runs a heavy business process in background on Tomcat. When the process ends, a big amount of memory keeps allocated (consumed) but we are not able to determine wich objects are staying in memory or the cause of the problem. We have been testing a couple of tools to profile the app with no success.
Any thoughts or ideas are welcome!
Things to check for Object Instance Tracking beyond tools.jar:
1. Are you using a supported JVM. For OIT, the supported JVMs will be Sun (Oracle) JVM 1.6.x and above.
2. Also, you might need to copy libatach.so (Linux) or attach.dll (Windows) from the JDK home to the JRE home.
If all that is done and you re-start Tomcat, you should be able to turn OIT to "ON" and see the top 20 application / system classes in terms of memory usage. This should give you the information you want, depending on the "background" nature of the task, Specifically, if the task is kicked off by a method invocation initiated by a servlet request it should show up.
In terms of defining the "right" business transactions, by default we use the first two segments of the URL to identify servlet based business transactions, but you can go to Configure > Instrumentation, select the incoming tier (where the requests come in) and click the "Use Custom Configuration". Then under Servlet transactions, all the way on the right there will be a link called "configure naming". Clicking that will open a panel that allows you to change how transactions are divided up. For example, if you need nore granularity, you might change the "2" to a "3" to get business transactions grouped by the first three path segments in the URL, etc.
Hope this helps.