-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Peter,

On 8/5/14, 7:54 PM, Peter Rifel wrote:
> I am in the process of upgrading from Tomcat 7.0.54 to Tomcat 8.0.9
> and am seeing some performance degradation in my webapp.
> 
> Configuration info:
> 
> Ubuntu 14.04.1 LTS java version "1.8.0_11" Java(TM) SE Runtime
> Environment (build 1.8.0_11-b12) Java HotSpot(TM) 64-Bit Server VM
> (build 25.11-b03, mixed mode)
> 
> Both versions of tomcat use the APR Connector with TC Native
> 1.1.31 statically linked against APR 1.5.1 and OpenSSL 1.0.1h
> 
> 
> I'm running identical requests to identical web apps between these
> tomcats and in Tomcat 8 I'm seeing an ~20% response time increase
> and as such a similar reqs / sec decrease.  After using VisualVM to
> profile the application I've narrowed it down to the JRE's JAXP
> library taking significantly longer to create its xml validation
> "SchemaFactory" which doesn't make sense to me because I'm using
> the same JRE in both tests.

To me, this suggests other factors that haven't been controlled, like
GC activity or something else. Are you sure you have a good
steady-state test?

Any chance you could create a single SchemaFactory object and then
synchronize access to it? It might reduce contention. Another
possibility is to use a ThreadLocal (which has its own dangers).

> I know that the Resources implementation was overhauled in Tomcat 8
> so is there any possibility that this could be a side effect?  For
> a better idea of what I'm talking about, see the below VisualVM
> screenshots of a profiling snapshot's call tree:
> 
> 
> Tomcat 7 - http://i.imgur.com/pbX5xBG.jpg Notice how the time spent
> in the javax.xml.validation.* methods is <6%
> 
> Tomcat 8 - http://i.imgur.com/Txv20lg.jpg Notice how the time spent
> in these methods is significantly higher.

Does the "validation" time include loading the schema itself from
wherever it is located?

> Again, I'm confused as to how the performance of the JRE's library
> changes between tomcat versions, can anyone explain this to me or
> point me in the right direction on where to look?  Is it as simple
> as a config change or will it require a java code change?  The
> XmlUtils.validate method you see in the screenshot is simply the
> following:
> 
> javax.xml.validation.SchemaFactory factory = 
> SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema";);
> 
> Here are the Tomcat configurations:
> 
> 
> Tomcat 8 server.xml: http://pastebin.com/Tn3d6bXd Tomcat 8
> context.xml: http://pastebin.com/reuJCGNq
> 
> Tomcat 7 server.xml: http://pastebin.com/Kq6SfFd0 Tomcat 7
> context.xml: http://pastebin.com/vdp0PGPh
> 
> 
> Does anyone have any idea why this might be performing so
> differently between versions of tomcat?  Could it be a bug in the
> JRE?  I can try and provide test code for repro if it helps.

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBCAAGBQJT4hZQAAoJEBzwKT+lPKRYJjkP/AzqWNqqEUask7/uF+tuQX13
jWhEVww7b7pMQjyoVqvMA1J4VoUTLBM1je6wJpBaIVndq8MIBu6vuO6rpZl3UH6N
/SpljKB4HdovwUIUAPtJKTV5bQExGGIgWUENYS6fA1YPOnI9hS5rShrs/YxMnjnW
csrR+UVW20TwucHvpsqoEPVFszD5j8WIg08tebKSEscAWqoKpShEpNAuSefh4AKZ
R3md0Zmd0Qevpn/zzusFKaVqb6LmCwLUfTbtmpCX/irK3wj800GXQT2WECrW3il8
mL9142A8FhtqsCKSh+A3mQukfaf5SZqJ5JPyKGAFNhceA4fgd3Sdb4pCKvb7uoav
NJda7luZaqRUcgm4CX6rNCVwf6aWccu3oO7L+tG7G8OHi6KptrZ6VOdrBb9peXvB
9pFddcxxBc1Th5mANGLFCC7JKc4Sq1VeG8CEIWPcl0JB/bKT2jODabcy6GQ9jpp6
HmTX8gRoc5sDpcPxq/vr+dcW7dSyAK9RYp7hYzUJaO13o5pCINcjzYdVBECLCKoU
Fyga1Re9v02CfL0aAUXAWgOWW7RNBm2ehBX1yqHq4Di/y5I84tJQxqcX9Amhss/R
HCfcT1FTIs671zYZOh/w3JTmkQC4BgPEEev9WM1XTel9y77x/QmDwpPzEvZT2fgS
4lvTEwCzxmgC4HjFVrxh
=A0ue
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to