Hi,
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 walking through a lenya site -
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
listener 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(ProcessingNode[],
Environment, InvokeContext, String, Map) line: 47
MatchNode.invoke(Environment, InvokeContext) line: 108
PipelineNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[],
Environment, InvokeContext) line: 69
PipelineNode.invoke(Environment, InvokeContext) line: 143
PipelinesNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[],
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(ProcessingNode[],
Environment, InvokeContext, String, Map) line: 47
MatchNode.invoke(Environment, InvokeContext) line: 108
PipelineNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[],
Environment, InvokeContext) line: 69
PipelineNode.invoke(Environment, InvokeContext) line: 143
PipelinesNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[],
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, ServletResponse)
line: 689
ServletHolder.handle(ServletRequest, ServletResponse) line: 427
WebApplicationHandler.dispatch(String, HttpServletRequest,
HttpServletResponse, ServletHolder, int) line: 475
WebApplicationHandler(ServletHandler).handle(String, String,
HttpRequest, HttpResponse) line: 567
PlusWebAppContext(HttpContext).handle(String, String, HttpRequest,
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?
P.S. I sent the same message to cocoon dev mailing list but there is no
response yet.