Dan, On 8/6/14, 4:52 AM, "Daniel Mikusa" <dmik...@pivotal.io> wrote:
>On Tue, Aug 5, 2014 at 7:54 PM, Peter Rifel <pri...@mixpo.com> wrote: > >> Hello, >> >> 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. >>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. >> >> >> 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. >> > >Are you using the "endorsed" directory with Tomcat 7 (and not with 8) by >any chance? > > >http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html#XML_Parser >s_and_Java > >Dan I double checked, and no I'm not using that or any special class-loading in either tomcat 7 or 8. For reference, here is my CATALINA_OPTS for both: (The Xverify:none at the end was to fix a problem with the profiler) -Djava.library.path=$CATALINA_HOME/lib/apr/osx:$CATALINA_HOME/lib/apr/linux -javaagent:$CATALINA_HOME/bin/classmexer.jar -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:$CATALINA_HOME/logs/garbage-collection_$(date +'%y_%m_%d__%H_%M').log -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -Dcom.sun.management.jmxremote.port=64850 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Xms128m -Xmx5120m -XX:MaxPermSize=256m -Xverify:none > > >> >> Thanks in advance, >> >> Peter Rifel >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >> For additional commands, e-mail: users-h...@tomcat.apache.org >> >> Peter --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org