[ 
https://issues.apache.org/jira/browse/AXIS2-4629?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12919712#action_12919712
 ] 

John Papandriopoulos commented on AXIS2-4629:
---------------------------------------------

I am also seeing the same issue in my own Axis2 web application.  I'd love to 
see the fix in an upcoming release.

> Poor performance in 1.5.1 due to threads waiting on monitor for synchronized 
> jre method
> ---------------------------------------------------------------------------------------
>
>                 Key: AXIS2-4629
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4629
>             Project: Axis2
>          Issue Type: Bug
>          Components: adb
>    Affects Versions: 1.5.1
>         Environment: RedHat 5.4, Solaris 10 
>            Reporter: Chris van Es
>            Priority: Critical
>
> We recently upgraded from axis2 1.4.1to 1.5.1 and with no changes to our java 
> methods which are exposed using axis we have seen a significant drop in 
> performance from around 500-600 TPS to 50 TPS at most. We took a jstack while 
> load is on our system and can see alot of threads blocked waiting for an 
> object monitor to enter the private method 
> java.beans.Introspector.getPublicDeclaredMethods in the JRE which is called 
> by axis - stack trace is below. 
> "http-9080-7" daemon prio=10 tid=0x0a95d800 nid=0x2f1d waiting for monitor 
> entry [0xdce76000]
>    java.lang.Thread.State: BLOCKED (on object monitor)
>         at java.beans.Introspector.getPublicDeclaredMethods(Unknown Source)
>         - waiting to lock <0xf0882fa0> (a java.lang.Class for 
> java.beans.Introspector)
>         at java.beans.Introspector.getTargetPropertyInfo(Unknown Source)
>         at java.beans.Introspector.getBeanInfo(Unknown Source)
>         at java.beans.Introspector.getBeanInfo(Unknown Source)
>         at java.beans.Introspector.getBeanInfo(Unknown Source)
>         at 
> org.apache.axis2.databinding.utils.BeanUtil.getPropertyQnameList(BeanUtil.java:132)
>         at 
> org.apache.axis2.databinding.utils.BeanUtil.getPullParser(BeanUtil.java:67)
>         at 
> org.apache.axis2.rpc.receivers.RPCUtil.processResponse(RPCUtil.java:97)
>         at 
> org.apache.axis2.rpc.receivers.RPCUtil.processResponseAsDocLitWrapped(RPCUtil.java:437)
>         at 
> org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:138)
>         at 
> org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
>         at 
> org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
>         at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
>         at 
> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:167)
>         at 
> org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:142)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>         at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>         at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>         at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>         at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>         at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>         at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
>         at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>         at 
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>         at java.lang.Thread.run(Unknown Source)
> From looking at the stack trace it seems like this is called when generating 
> every response hence the performance hit and having compared the 1.4.1 and 
> 1.5.1 source we can see that the call to the synchronized JRE method is not 
> made in 1.4.1. This issue is critical to our release as we expect this 
> interface to have a high throughput.

-- 
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]

Reply via email to