tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Costin Manolache <>
Subject Re: DO NOT REPLY [Bug 16001] - Tag.release() not invoked
Date Sat, 18 Jan 2003 06:23:55 GMT
Bill Barker wrote:

>> I saw a significant, measureable improvement in performance when I
> upgraded
>> our production systems to Jasper 2 with tag pooling from Jasper 1
>> without. CPU load on the production server dropped around 30%, request
>> latency was
>> reduced significantly, etc.  The app server handles 30k-100K requests per
> day.
>> This is on a Sun dual CPU E250, 768MB of Ram, that is run solely as an
>> app
> server.
>> OS is Solaris 8, JVM is 1.3.1 using HotSpot server, and I have spent time
> tuning
>> the JVM stack and GC java startup args.
>> Tag pooling elminates significant amounts of GC.  That is where the real
>> benefit of tag pooling comes from.  With tag pooing the frequency and
>> length of GC's are reduced a great deal.
> I saw just the opposite.  Jasper2 with tag-pooling was a real dog (the
> time spent in synchronized methods to maintain the pool completely swamped
> any
> benefit from GC).  After patching my copy to make don't-tag-pool the
> default (since there isn't any way to do this in the config :( ), then
> Tomcat 4.1/Jasper2 was about 60% faster that Tomcat 3.3/Jasper1 when I
> 'ab' benchmarked it against one of my more complex pages.

Yes, I've seen similar results - tag libs are very tricky from a performance
point of view.

The problem is that jasper does a lot of synchronization - it is a problem
with the tagpool implementation, not an indication that creating tons of 
garbage is good. You can make the whole tag reuse be sync-free,
and have the entire page served without any allocation - just create the
tags once, at init time - and keep them in a per/thread data. 



To unsubscribe, e-mail:   <>
For additional commands, e-mail: <>

View raw message