New to this topic, I have a basic question about profiler like jProbe, etc ---
Suppose I have a j2ee web application and want to use jProbe to check the bottleneck. Do I have to
1) get the j2ee application start running on my application server 2) get my jprobe installed and up running with the application server
The problem is it is hard to predict when the performance problem appears on the production system. How can I get a "snapshot" of what's the bottleneck while the system is down due to performance problem ? Do I have to have my jProbe ALWAYS up running while my production server is on ? That doesn't make much sense.
Ben, Usually, you use a profiler when running a load test (in a non-production environment.) In production, you use a monitoring tool to tell you if the system reaches any critical thresholds. This is a lot less intrusive than a profiler.
Originally posted by Jeanne Boyarsky: Ben, Usually, you use a profiler when running a load test (in a non-production environment.) In production, you use a monitoring tool to tell you if the system reaches any critical thresholds. This is a lot less intrusive than a profiler.
It is certainly true that our site goes down when it reaches certain number of users... Then, does it mean we *have to* combine jProbe with load test ? What if I don't have a load test software/tool ? Can jProbe still help ?
Another question is --- Do I have to "tell" jProbe which object to monitor ? Will jProbe automatically diagnose for me which object/method consumes too much memory ?
Also consider using JAMon. It is free and is fast enough to run in production systems. The jamon servlet filter requires no changes to your web app to get it running. Just add a few lines to you web.xml and make jamon.jar available.
Jprobe is not expected to be used in a production environment. It adds its own overhead to the application which could be upto 20%. You may probably use some non-intrusive monitoring tools on your prod env like Jamon, Sitescope or Topaz, if you dont have access to load testing environment to test with jprobe.
The application failure when load increases may be due to various factors including issues with the application and also lack of sufficient hardware resources like memory, processor, network etc
Regarding usage of jprobe, you can configure it to profile your entire application classes or any specific objects. [ June 12, 2006: Message edited by: Howard Chan ]