tomcat-taglibs-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Schnitzer, Jeff" <JSchnit...@maxis.com>
Subject RE: JSTL synchronization bottleneck
Date Fri, 24 Jan 2003 21:00:21 GMT
[I'm moving this to taglibs-user because I have a more general question]

Thanks.  I'm not quite sure why synchronization is so slow - a little
test app that does nothing more than have a bunch of threads fighting
over a mutex shows that JDK1.4.1_01 on Linux is about 1/15th the speed
of JDK1.4.1_01 on Windows.  Still it doesn't seem like it should be an
issue; throughput is still tens of thousands of locks per second.
Nevertheless, when I put my application under load and check a thread
dump, all I see are threads waiting on monitors.

Is anyone else running a high-volume JSTL-based application (or any
other application with a fair amount of synchronization) on Linux?  Have
you seen any thread contention issues?

Jeff Schnitzer
jschnitzer@maxis.com
The Sims Online

> -----Original Message-----
> From: Shawn Bayern [mailto:bayern@essentially.net]
> Sent: Friday, January 24, 2003 8:06 AM
> To: Tag Libraries Developers List
> Subject: Re: JSTL synchronization bottleneck
> 
> Hi Jeff,
> 
> Yes, this is a relic from an earlier implementation that we can indeed
> optimize.  I'll look into it more closely and try to post a fix
shortly.
> 
> Shawn
> 
> On Thu, 23 Jan 2003, Schnitzer, Jeff wrote:
> 
> > I'm doing some performance testing on an application that makes
> > extensive use of JSTL tags.  The #1 bottleneck is the
synchronization of
> > ExpressionEvaluatorManager.getEvaluatorByName().  Here is where all
my
> > threads sit under load:
> >
> > "Ajp13Processor[8009][496]" daemon prio=1 tid=0x0x8d714c8 nid=0x2520
> > waiting for monitor entry [7eda5000..7eda6840]
> >         at
> >
org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager.getE
> > valuatorByName(ExpressionEvaluatorManager.java:144)
> >         - waiting to lock <0x652eb1e0> (a java.lang.Class)
> >         at
> >
org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager.eval
> > uate(ExpressionEvaluatorManager.java:109)
> >         at
> >
org.apache.taglibs.standard.tag.el.core.ExpressionUtil.evalNotNull(Expre
> > ssionUtil.java:85)
> >         at
> >
org.apache.taglibs.standard.tag.el.core.OutTag.evaluateExpressions(OutTa
> > g.java:137)
> >         at
> >
org.apache.taglibs.standard.tag.el.core.OutTag.doStartTag(OutTag.java:95
> > )
> >
> >
> > Considering that EVALUATOR_CLASS is a constant, can we just load it
at
> > startup and dispense with the map, synchronization, etc?  This is a
> > serious performance problem.
> >
> > Thanks,
> > Jeff Schnitzer
> > jschnitzer@maxis.com
> > The Sims Online
> >
> > --
> > To unsubscribe, e-mail:   <mailto:taglibs-dev-
> unsubscribe@jakarta.apache.org>
> > For additional commands, e-mail: <mailto:taglibs-dev-
> help@jakarta.apache.org>
> >
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:taglibs-dev-
> unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: <mailto:taglibs-dev-
> help@jakarta.apache.org>
> 


--
To unsubscribe, e-mail:   <mailto:taglibs-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:taglibs-user-help@jakarta.apache.org>


Mime
View raw message