[JBossWS] - Waiting lock during performance test(log4j locking)
by ienvyou
I post my problem because I didn't find locking issue on this forum.
I'm under Web Service BMT using JBoss EAP 4.3 CP03 and testing tool is LoadRunner which will be increased concurrent 20 to 2000 users.
There was so high CPU usage during load test, so I got a thread dump from running instance.
JDK : BEA JRockit 1.5.0 ia64
OS : RHEL 5.2
WAS : JBoss EAP 4.3 CP03
I think this is a general issue related log4j.
I tried to comment log4j configuration for JBoss WS "org/jboss/ws/core/jaxws" pacakge in $SERVER_HOME/conf/jboss-log4j.xml, but I couldn't find the logger category for JBoss WS.
Here is stacktrace in thread dump. 40 of thread(total 60) is waiting for getting log4j.
-- Blocked trying to get lock: org/apache/log4j/spi/RootLogger@0x25d4a58[thin lock]
| at jrockit/vm/Threads.sleep(I)V(Native Method)
| at jrockit/vm/Locks.waitForThinRelease(Locks.java:1208)[optimized]
| at jrockit/vm/Locks.monitorEnterSecondStageHard(Locks.java:1341)[optimized]
| at jrockit/vm/Locks.monitorEnterSecondStage(Locks.java:1258)[optimized]
| at org/apache/log4j/Category.callAppenders(Category.java:201)[optimized]
| at org/apache/log4j/Category.forcedLog(Category.java:388)[inlined]
| at org/apache/log4j/Category.log(Category.java:853)[inlined]
| at org/jboss/logging/Log4jLoggerPlugin.debug(Log4jLoggerPlugin.java:129)[optimized]
| at org/jboss/logging/Logger.debug(Logger.java:160)[inlined]
| at org/jboss/ws/core/jaxws/handler/HandlerDelegateJAXWS.callRequestHandlerChain(HandlerDelegateJAXWS.java:75)[optimized]
| at org/jboss/ws/core/server/ServiceEndpointInvoker.invoke(ServiceEndpointInvoker.java:170)[optimized]
| at org/jboss/wsf/stack/jbws/RequestHandlerImpl.processRequest(RequestHandlerImpl.java:424)[optimized]
| at org/jboss/wsf/stack/jbws/RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:287)[inlined]
| at org/jboss/wsf/stack/jbws/RequestHandlerImpl.doPost(RequestHandlerImpl.java:197)[inlined]
| at org/jboss/wsf/stack/jbws/RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:123)[inlined]
| at org/jboss/wsf/stack/jbws/EndpointServlet.service(EndpointServlet.java:84)[optimized]
| at javax/servlet/http/HttpServlet.service(HttpServlet.java:717)[optimized]
| at org/apache/catalina/core/ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)[inlined]
| at org/apache/catalina/core/ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)[optimized]
| at org/jboss/web/tomcat/filters/ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)[optimized]
| at org/apache/catalina/core/ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)[inlined]
How do I fix this problem? Where could I change log4j category for JBoss WS?
Thank in advance.
JW
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4198969#4198969
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4198969
16 years
[Installation, Configuration & DEPLOYMENT] - Re: JAVA_OPTS in run.conf
by mduffy_lists
javax.servlet.ServletException: Servlet execution threw an exception
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:313)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
| at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
| at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
| at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
| at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
| at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
| at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
| at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
| at java.lang.Thread.run(Thread.java:619)
| Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
We added -XX:-UseGCOverheadLimit to the JAVA_OPTS but I am not sure that is the optimal solution.
Mike
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4198966#4198966
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4198966
16 years