Massive Performance issues after upgrading from 1.3 to 1.5 ----------------------------------------------------------
Key: VELOCITY-562 URL: https://issues.apache.org/jira/browse/VELOCITY-562 Project: Velocity Issue Type: Bug Affects Versions: 1.5 Environment: Integreated in Tomcat on both MS Windows an Linux servers Reporter: nhb After updating Velocity from 1.3 to 1.5 we are having massive performance issues. I am not talking about Velocity 1.5 beiing slower than 1.3 but about 100%CPU ussage for several minutes if two threads are parsing (different) tempaltes at the same time: Getting the stacktraces is a bit difficult because the complete system is very unresponsive. Here is an example stacktrace but i don't know if it really shows the cause of the problems: Full thread dump Java HotSpot(TM) Client VM (1.5.0_08-b03 mixed mode): "DataExchange" daemon prio=1 tid=0x08b2df10 nid=0x2824 waiting for monitor entry [0x8545a000..0x8545b130] at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:287) - waiting to lock <0x91140270> (a org.apache.velocity.runtime.resource.ResourceManagerImpl) at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1102) at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1077) at org.apache.velocity.runtime.RuntimeSingleton.getTemplate(RuntimeSingleton.java:303) at org.apache.velocity.app.Velocity.getTemplate(Velocity.java:503) at de.his.servlet.util.ServletUtil.parseWithVelocity(ServletUtil.java:735) at de.his.servlet.util.ServletUtil.getVelocityString(ServletUtil.java:753) at de.his.xml.XSLTransformator.transform(XSLTransformator.java:163) at de.his.xml.XSLTransformator.transform(XSLTransformator.java:110) at de.his.xml.dbinterface.DBInterface.processRequest(DBInterface.java:431) at de.his.xml.dbinterface.DatabaseAdapter.processDirect(DatabaseAdapter.java:370) at de.his.xml.dbinterface.DatabaseAdapter.process(DatabaseAdapter.java:387) at de.his.xml.dbinterface.DatabaseAdapter.readDatabase(DatabaseAdapter.java:336) at de.his.xml.dbinterface.DatabaseAdapter.doDataExchange(DatabaseAdapter.java:680) at de.his.xml.dbinterface.DataExchangeThread.run(DataExchangeThread.java:144) at java.lang.Thread.run(Thread.java:595) "http-8080-Processor23" daemon prio=1 tid=0x08220cc8 nid=0x2803 runnable [0x858e2000..0x858e3db0] at org.apache.velocity.runtime.parser.Parser.jj_scan_token(Parser.java:3259) at org.apache.velocity.runtime.parser.Parser.jj_3R_56(Parser.java:3089) at org.apache.velocity.runtime.parser.Parser.jj_3R_29(Parser.java:2696) at org.apache.velocity.runtime.parser.Parser.jj_3_8(Parser.java:2530) at org.apache.velocity.runtime.parser.Parser.jj_3_7(Parser.java:2574) at org.apache.velocity.runtime.parser.Parser.jj_2_7(Parser.java:2483) at org.apache.velocity.runtime.parser.Parser.Reference(Parser.java:1240) at org.apache.velocity.runtime.parser.Parser.PrimaryExpression(Parser.java:2391) at org.apache.velocity.runtime.parser.Parser.UnaryExpression(Parser.java:2366) at org.apache.velocity.runtime.parser.Parser.MultiplicativeExpression(Parser.java:2215) at org.apache.velocity.runtime.parser.Parser.AdditiveExpression(Parser.java:2139) at org.apache.velocity.runtime.parser.Parser.RelationalExpression(Parser.java:2007) at org.apache.velocity.runtime.parser.Parser.EqualityExpression(Parser.java:1931) at org.apache.velocity.runtime.parser.Parser.ConditionalAndExpression(Parser.java:1891) at org.apache.velocity.runtime.parser.Parser.ConditionalOrExpression(Parser.java:1851) at org.apache.velocity.runtime.parser.Parser.Expression(Parser.java:1798) at org.apache.velocity.runtime.parser.Parser.SetDirective(Parser.java:1730) at org.apache.velocity.runtime.parser.Parser.Statement(Parser.java:310) at org.apache.velocity.runtime.parser.Parser.IfStatement(Parser.java:1453) at org.apache.velocity.runtime.parser.Parser.Statement(Parser.java:293) at org.apache.velocity.runtime.parser.Parser.IfStatement(Parser.java:1453) at org.apache.velocity.runtime.parser.Parser.Statement(Parser.java:293) at org.apache.velocity.runtime.parser.Parser.IfStatement(Parser.java:1453) at org.apache.velocity.runtime.parser.Parser.Statement(Parser.java:293) at org.apache.velocity.runtime.parser.Parser.IfStatement(Parser.java:1453) at org.apache.velocity.runtime.parser.Parser.Statement(Parser.java:293) at org.apache.velocity.runtime.parser.Parser.ElseStatement(Parser.java:1564) at org.apache.velocity.runtime.parser.Parser.IfStatement(Parser.java:1495) at org.apache.velocity.runtime.parser.Parser.Statement(Parser.java:293) at org.apache.velocity.runtime.parser.Parser.process(Parser.java:258) at org.apache.velocity.runtime.parser.Parser.parse(Parser.java:105) at org.apache.velocity.runtime.RuntimeInstance.parse(RuntimeInstance.java:1042) at org.apache.velocity.runtime.RuntimeInstance.parse(RuntimeInstance.java:972) at org.apache.velocity.Template.process(Template.java:120) at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:415) at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:335) - locked <0x91140270> (a org.apache.velocity.runtime.resource.ResourceManagerImpl) at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1102) at org.apache.velocity.runtime.directive.Parse.render(Parse.java:177) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:170) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:88) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:88) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:448) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:170) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:318) at org.apache.velocity.runtime.directive.Parse.render(Parse.java:224) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:170) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:88) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:318) at org.apache.velocity.runtime.directive.Parse.render(Parse.java:224) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:170) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:88) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:318) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:107) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:88) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:318) at org.apache.velocity.runtime.directive.Parse.render(Parse.java:224) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:170) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:448) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:170) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:88) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:448) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:170) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:88) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:88) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:318) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:107) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:74) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:318) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:107) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:318) at org.apache.velocity.Template.merge(Template.java:254) at de.his.servlet.util.ServletUtil.parseWithVelocity(ServletUtil.java:736) at de.his.servlet.util.ServletUtil.sendResponseWithVelocity(ServletUtil.java:684) at de.his.servlet.HISServletModuleImpl.handleRequest(HISServletModuleImpl.java:637) at de.his.servlet.RequestDispatcherServlet.invoke(RequestDispatcherServlet.java:908) at de.his.servlet.RequestDispatcherServlet.handleRequest(RequestDispatcherServlet.java:843) at de.his.servlet.RequestDispatcherServlet.doGet(RequestDispatcherServlet.java:1060) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]