tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Echerer <m...@tngtech.com>
Subject Re: Performance monitoring for web applications
Date Sun, 10 Sep 2006 13:56:35 GMT
Shimol Shah wrote:
Hi,
> Hi,
> 
> I am trying to look for a way to programmtically find CPU resources used
> and
> memory used for indivudual web applications. I have given it many tries on
> Google but only thing I could find was some third party tool vendors that
> give solutions to performance monitoring. Instead what I am looking for is
> the programmatic way of knowing CPU and memory usage by a particular web
> application.
> 
> I would really appreciate if someone can point me to a right direction. I
> can work it out form there.
> 
> Thanks,
> Shimol.
> 
Try the Java 5.0+ javax.management API:
http://java.sun.com/j2se/1.5.0/docs/api/index.html?javax/management/package-summary.html
http://download.java.net/jdk6/docs/jre/api/management/extension/com/sun/management/package-tree.html
http://download.java.net/jdk6/docs/jre/api/management/extension/com/sun/management/OperatingSystemMXBean.html#getProcessCpuTime()

with Java 6.0 there might be more options:
http://download.java.net/jdk6/docs/api/java/lang/management/OperatingSystemMXBean.html#getSystemLoadAverage()

and have a look at www.lamdaprobe.org and its sources to get an idea.
Basically you can get the CPU time the process uses and can put it into
relation to a period of time to get the relative CPU usage like
lamdaprobe does it. However it'll be only the usage of the JVM process
not all processes.
No clue how to measure per thread and you'll have to find a way to map
all http connector threads in use at each point in time to each webapps
to get a sum of cpu times for a certain webapp and put it into relation
to the overall process time. Maybe you could weave something before and
after each connector thread with aspectJ to measure to time the thread
was used or have your own implementation. Nevertheless this wouldn't
measure the cpu time of that thread, too.
For memory it'll be difficult, too. Probably you can measure all objects
similar to what lamdaprobe does for the Httpsession object. Instead
you'd have to measure all objects for one classloader. As you have one
classloader per webapp, this could be what you want.
I guess it'll be quite Tomcat and SunVM specific, if it works at all.

Cheers and good luck. Let us know if you found a way.
Michael


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message