Return-Path: Delivered-To: apmail-cocoon-dev-archive@www.apache.org Received: (qmail 27057 invoked from network); 18 Nov 2009 16:42:49 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 18 Nov 2009 16:42:49 -0000 Received: (qmail 57992 invoked by uid 500); 18 Nov 2009 16:42:49 -0000 Delivered-To: apmail-cocoon-dev-archive@cocoon.apache.org Received: (qmail 57881 invoked by uid 500); 18 Nov 2009 16:42:48 -0000 Mailing-List: contact dev-help@cocoon.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@cocoon.apache.org List-Id: Delivered-To: mailing list dev@cocoon.apache.org Received: (qmail 57872 invoked by uid 99); 18 Nov 2009 16:42:48 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Nov 2009 16:42:48 +0000 X-ASF-Spam-Status: No, hits=3.4 required=10.0 tests=HTML_MESSAGE,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [69.48.134.130] (HELO mail.jlctech.com) (69.48.134.130) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Nov 2009 16:42:39 +0000 From: Maxim Borkunov To: "dev@cocoon.apache.org" Date: Wed, 18 Nov 2009 11:42:13 -0500 Subject: Flow script performance issue Thread-Topic: Flow script performance issue Thread-Index: AcpobhSx6B8KjcF8TQqCtEDN7KsNAg== Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: multipart/alternative; boundary="_000_F45D99999FF5544CB0096C54874598C126F6057Fjlcex2007jlctec_" MIME-Version: 1.0 X-Virus-Checked: Checked by ClamAV on apache.org --_000_F45D99999FF5544CB0096C54874598C126F6057Fjlcex2007jlctec_ Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Hi everyone, I am using lenya 2.0.2 (cocoon-2.1.12-dev) and I made some performance test= s with jmeter utility. 50 users in the same time walking through a lenya si= te - that's my jmeter setup. Unfortunatly, I found a bottleneck. The users (jmeter threads) freeze for a= long time at pages that uses flow scripts. Almost all web server socket li= stener threads at this time shows the point listed below: Thread [SocketListener0-24] (Suspended) FOM_JavaScriptInterpreter.setupContext(Redirector, Context, FOM= _JavaScriptInterpreter$ThreadScope) line: 571 FOM_JavaScriptInterpreter.callFunction(String, List, Redirector= ) line: 718 CallFunctionNode.invoke(Environment, InvokeContext) line: 139 MatchNode(AbstractParentProcessingNode).invokeNodes(ProcessingN= ode[], Environment, InvokeContext, String, Map) line: 47 MatchNode.invoke(Environment, InvokeContext) line: 108 PipelineNode(AbstractParentProcessingNode).invokeNodes(Processi= ngNode[], Environment, InvokeContext) line: 69 PipelineNode.invoke(Environment, InvokeContext) line: 143 PipelinesNode(AbstractParentProcessingNode).invokeNodes(Process= ingNode[], Environment, InvokeContext) line: 69 PipelinesNode.invoke(Environment, InvokeContext) line: 93 ConcreteTreeProcessor.process(Environment, InvokeContext) line:= 235 ConcreteTreeProcessor.process(Environment) line: 177 TreeProcessor.process(Environment) line: 254 MountNode.invoke(Environment, InvokeContext) line: 118 MatchNode(AbstractParentProcessingNode).invokeNodes(ProcessingN= ode[], Environment, InvokeContext, String, Map) line: 47 MatchNode.invoke(Environment, InvokeContext) line: 108 PipelineNode(AbstractParentProcessingNode).invokeNodes(Processi= ngNode[], Environment, InvokeContext) line: 69 PipelineNode.invoke(Environment, InvokeContext) line: 143 PipelinesNode(AbstractParentProcessingNode).invokeNodes(Process= ingNode[], Environment, InvokeContext) line: 69 PipelinesNode.invoke(Environment, InvokeContext) line: 93 ConcreteTreeProcessor.process(Environment, InvokeContext) line:= 235 ConcreteTreeProcessor.process(Environment) line: 177 TreeProcessor.process(Environment) line: 254 Cocoon.process(Environment) line: 699 CocoonServlet.service(HttpServletRequest, HttpServletResponse) = line: 1154 CocoonServlet(HttpServlet).service(ServletRequest, ServletRespo= nse) line: 689 ServletHolder.handle(ServletRequest, ServletResponse) line: 427 WebApplicationHandler.dispatch(String, HttpServletRequest, Http= ServletResponse, ServletHolder, int) line: 475 WebApplicationHandler(ServletHandler).handle(String, String, Ht= tpRequest, HttpResponse) line: 567 PlusWebAppContext(HttpContext).handle(String, String, HttpReque= st, HttpResponse) line: 1565 PlusWebAppContext(WebApplicationContext).handle(String, String,= HttpRequest, HttpResponse) line: 635 PlusWebAppContext(HttpContext).handle(HttpRequest, HttpResponse= ) line: 1517 PlusWebAppContext.handle(HttpRequest, HttpResponse) line: 158 Server(HttpServer).service(HttpRequest, HttpResponse) line: 954 HttpConnection.service(HttpRequest, HttpResponse) line: 814 HttpConnection.handleNext() line: 981 HttpConnection.handle() line: 831 SocketListener.handleConnection(Socket) line: 244 SocketListener(ThreadedServer).handle(Object) line: 357 ThreadPool$PoolThread.run() line: 534 Is that synchronization in the org.apache.cocoon.components.flow.javascript= .fom.FOM_JavaScriptInterpreter class important? Could you please advise how can I solve this performance problem? --_000_F45D99999FF5544CB0096C54874598C126F6057Fjlcex2007jlctec_ Content-Type: text/html; charset="koi8-r" Content-Transfer-Encoding: quoted-printable

Hi everyone,

 

I am using lenya 2.0.2 (cocoon-2.1.12-dev) and I = made some performance tests with jmeter utility. 50 users in the same time walki= ng through a lenya site - that's my jmeter setup.

Unfortunatly, I found a bottleneck. The users (jm= eter threads) freeze for a long time at pages that uses flow scripts. Almost all= web server socket listener threads at this time shows the point listed below:

 

Thread [SocketListener0-24] (Suspended)=9A=9A=9A= =9A=9A=9A=9A=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A FOM_JavaScriptI= nterpreter.setupContext(Redirector, Context, FOM_JavaScriptInterpreter$ThreadScope) line: 571=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A FOM_JavaScriptI= nterpreter.callFunction(String, List, Redirector) line: 718

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A CallFunctionNod= e.invoke(Environment, InvokeContext) line: 139=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A MatchNode(Abstr= actParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext, String, Map) line: 47 =

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A MatchNode.invok= e(Environment, InvokeContext) line: 108

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A PipelineNode(Ab= stractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 69=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A =

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A PipelineNode.in= voke(Environment, InvokeContext) line: 143=9A=9A=9A=9A=9A=9A=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A PipelinesNode(A= bstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 69=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A =

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A PipelinesNode.i= nvoke(Environment, InvokeContext) line: 93=9A=9A=9A=9A=9A=9A=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A ConcreteTreePro= cessor.process(Environment, InvokeContext) line: 235=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A ConcreteTreePro= cessor.process(Environment) line: 177=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A TreeProcessor.p= rocess(Environment) line: 254=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A MountNode.invok= e(Environment, InvokeContext) line: 118

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A MatchNode(Abstr= actParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext, String, Map) line: 47 =

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A MatchNode.invok= e(Environment, InvokeContext) line: 108

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A PipelineNode(Ab= stractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 69=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A =

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A PipelineNode.in= voke(Environment, InvokeContext) line: 143=9A=9A=9A=9A=9A=9A=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A PipelinesNode(A= bstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 69=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A =

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A PipelinesNode.i= nvoke(Environment, InvokeContext) line: 93=9A=9A=9A=9A=9A=9A=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A ConcreteTreePro= cessor.process(Environment, InvokeContext) line: 235=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A ConcreteTreePro= cessor.process(Environment) line: 177=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A TreeProcessor.p= rocess(Environment) line: 254=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A Cocoon.process(= Environment) line: 699=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A CocoonServlet.s= ervice(HttpServletRequest, HttpServletResponse) line: 1154=9A=9A=9A=9A=9A=9A=9A=9A <= /font>

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A CocoonServlet(H= ttpServlet).service(ServletRequest, ServletResponse) line: 689=9A=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A ServletHolder.h= andle(ServletRequest, ServletResponse) line: 427

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A WebApplicationH= andler.dispatch(String, HttpServletRequest, HttpServletResponse, ServletHolder, int) line: 475=9A= =9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A WebApplicationH= andler(ServletHandler).handle(String, String, HttpRequest, HttpResponse) line: 567=9A=9A=9A=9A=9A=9A=9A=9A <= /o:p>

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A PlusWebAppConte= xt(HttpContext).handle(String, String, HttpRequest, HttpResponse) line: 1565=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A PlusWebAppConte= xt(WebApplicationContext).handle(String, String, HttpRequest, HttpResponse) line: 635=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A =

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A PlusWebAppConte= xt(HttpContext).handle(HttpRequest, HttpResponse) line: 1517=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A PlusWebAppConte= xt.handle(HttpRequest, HttpResponse) line: 158=9A=9A=9A=9A=9A=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A Server(HttpServ= er).service(HttpRequest, HttpResponse) line: 954

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A HttpConnection.= service(HttpRequest, HttpResponse) line: 814=9A=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A HttpConnection.= handleNext() line: 981=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A HttpConnection.= handle() line: 831=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A <= /p>

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A SocketListener.= handleConnection(Socket) line: 244=9A=9A=9A=9A=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A SocketListener(= ThreadedServer).handle(Object) line: 357

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A ThreadPool$Pool= Thread.run() line: 534=9A=9A=9A

=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A=9A

 

Is that synchronization in the org.apache.cocoon.components.flow.javascript.fom.FOM_JavaScriptInterpreter class important?

Could you please advise how can I solve this performance problem?

--_000_F45D99999FF5544CB0096C54874598C126F6057Fjlcex2007jlctec_--